天天看点

一、ansible简介和安装

ansible是2013年推出的一款IT自动化和DevOps软件,2015年被RedHat收购,是基于Python研发,糅合很多老运维工具的优点,实现批量操作系统配置,批量程序部署,批量运行命令等功能

​ansible可以实现:

(1). 可以实现批量系统操作配置  

(2). 可以实现批量软件服务部署

(3). 可以实现批量文件数据分发

(4). 可以实现批量系统信息收集

--自动化部署APP

--自动化管理配置项

--自动化持续交付

--自动化(AWS)云服务管理

--只需要SSH和Python即可使用

--无刻画段

--ansible功能强大,模块丰富

--上手容易,门栏低

--基于Python开发,做二次开发更容易

--使用公司较多,社区活跃

(1).对管理主机

-要求Python2.6或Python2.7

ansible使用以下模块,都需要安装

-Paramiko

-PyYAML

-jinja2

-httplib2

-sik

(2).对于被托管主机

-ansible默认通过SSH协议管理机器

-被管理主机要开启ssh服务,允许ansible主机登录

-在托管主机要开启ssh服务

-在托管节点也要安装Python2.5或以上的版本

-如果托管节点开启了SElinux,需要安装libselinux-python

​ansible执行命令时,通过其底层传输连接模块,将一个或数个文件,或者定义一个play或command命令传输到远程服务器/tmp目录的临时文件,并在远程执行这些play/command命令,然后删除这些临时文件,同时回传整个命令执行结果。

ansible底层基于安全可靠的SSH通讯协议​

​wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

安装ansible

yum install -y ansible

一、ansible简介和安装

ansible配置文件查找路径

-首先检查ANSIBLE_CONFIG变量定义的配置文件

-其次检查当前目录下的./ansible.cfg文件

-再次检查当前用户目录下的~/ansible.cfg文件

-最后检查/etc/ansible/ansible.cfg文件

​----------------------------------------------------------------------------------------------------

/etc/ansible/ansible.cfg是ansible的默认配置文件路径

#inventory      = /etc/ansible/hosts      #主机列表配置文件

#library        = /usr/share/my_modules/  #库文件存放目录

#remote_tmp     = ~/.ansible/tmp          #临时py文件存放在远程主机目录

#local_tmp      = ~/.ansible/tmp          #本地的临时执行目录

#forks          = 5                       #默认并发数                                          

#sudo_user      = root                    #默认sudo用户

#ask_sudo_pass = True                     #每次执行是否询问sudo的ssh密码

#ask_pass      = True                     #每次执行是否询问ssh密码

#remote_port    = 22                      #远程主机端口号

ansible配置文件:

inventory 定义托管主机地址配置文件路径名

inventory 指定的配置文件,写入远程主机的地址

​host_key_checking = False ##跳过检查主机指纹这个最好设置为False 

##SSH远程主机交互是否需要确认 True (等待输入yes)、False(不需要输入yes)​

​vi /etc/ansible/hosts

[webserver]

192.168.10.128

192.168.10.130

​额外几种配置方式

(1)范围配置

node[3:4]

(2)包含配置

[cluster:children]

database

webserver

(3)组配置参数

[webserver:vars]

ansible_ssh_pass='123456'

ansible 主机集合 -m 模块名称 -a 参数名称

--主机集合 主机名或分组名,多个使用逗号分隔

-m 模块名称,如果没有指明,则默认使用command模块

-a 或者 --args 模块参数

其他参数

-i inventory文件路径,或可执行脚本

-k 使用交互方式登录密码

-e 定义变量

-v 显示详细信息

(1)非免密登录

ansible 192.168.10.130 -m ping -k ###使用交互方式密码登录

一、ansible简介和安装

(2)配置主机清单配置文件

直接 /etc/ansible/hosts配置

​​[webserver]

​192.168.10.128 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'

192.168.10.130 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'

一、ansible简介和安装
一、ansible简介和安装

或者组配置参数

ansible_ssh_port=22 ##默认ssh端口号,如果做了修改,必须单独配置

ansible_ssh_user=root ###默认的ssh的用户名

一、ansible简介和安装

或者单独写一个主机清单文件

vi /tmp/hosts

​192.168.10.128

ansible_ssh_port=22

ansible_ssh_user=root

ansible webserver -m ping -i /tmp/hosts ##-i指定主机清单的位置

一、ansible简介和安装

(3)设置密钥对,免密登录

直接ssh-keygen一路回车

然后ssh-copy-id [email protected]、ssh-copy-id [email protected]实现免密

另一种方式不使用默认的密钥

​cd /root/.ssh

​ssh-keygen -t rsa -b 2048 -N '' -f key

这样子生成的密钥对名称是 key key.pub

给所有主机部署密钥(必须在/root/.ssh目录下,不然找不到key.pub)

ssh-copy-id -i key.pub [email protected]

ssh-copy-id -i key.pub [email protected]

由于此时不是使用的默认的密钥名称

需要在主机清单添加配置

ansible_ssh_private_key_file="/root/.ssh/key"

继续阅读