yum 安装ansible
[root@jenkins ~]# yum install epel-release -y
[root@jenkins ~]# yum install ansible -y
添加节点设备
在host文件中添加主机名
[root@jenkins ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.150 jenkins
192.168.0.160 jenkins-slave
配置免密登录方式
创建master节点的ssh public key
[root@jenkins ~]# ssh-keygen -t rsa
将key分发到要管理的设备jenkins-slave
[root@jenkins ~]# ssh-copy-id root@jenkins-slave
也可以提前在其他节点设备提前写入ssh key
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC59QCKYQVDrn1/Qj7SFGwCQlpAp+WuxYgnwh9lLuxBVrW+ri6fZN9swA5avXhUIEbRTHIQgF5BotnShaz2+Hk9caiBDDtdwl8C1sA79cUYZP9D3xYwxPrN5G1ZIqk/g//IhZ8A+I7kYt1dc+XnpUfmhbIcq8LhF2TYsX0LU2HLxngtx4779CEaiVq+CCjbSXzcNoU2IF39IaqV+YttURgiv1sbWZBlo/ADp9P153MqqNa6O+d/RbkgXCOWNiwIe39vNy8hN79MaPVjY9ySLro+celMPSgNkT/j8IdPkUm8cpJDb6R7Mg1cwdhi97pJ2jR8wY9KtNIdmSfsm1p5+DCx root@jenkins" >> /root/.ssh/authorized_keys
修改 /etc/ssh/sshd_config中参数加速远程登录
UseDNS no
GSSAPIAuthentication no
在ansible中配置设备列表清单
ansible 在 /etc/ansible/hosts 定位设备列表,一行只能定义一台设备,设备表示不能重复。
例1:未分组的主机,请在任何组头之前指定(必须写在文件的最前面,否则无法识别),这些主机可以填入IP地址或者主机名。
[root@jenkins ansible]# cat /etc/ansible/hosts
jenkins
jenkins-slave
192.168.0.150
192.168.0.160
例2:属于“jenkins”组的主机集合(定义几台设备到一个主机组中,主机组名称不能和主机名称相同)
jenkins
jenkins-slave
192.168.0.150
192.168.0.160
[jenkinsserver]
jenkins
jenkins-slave
例3:也可以用如下方式定义一组服务器
web-[99:101]-node.example.com
定义了web-99-node.example.com web-100-node.example.com web-101-node.example.com 这3台服务器
例4:一个组也可以是另外一个组的成员
[servertest:children]
jenkinsserver
如果管理的设备没有开启免密登录,可以在hosts文件中配置期账号密码等登录信息
test ansible_ssh_host=192.168.0.160 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456
同时需修改配置文件/etc/ansible/ansible.cfg中ssh_args参数,添加 -o StrictHostKeyChecking=no 或者 开启参数 host_key_checking = False
ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no
host_key_checking = False
否则出现如下错误:
FAILED! => {
"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host."
}
参数 | 解释 |
---|---|
ansible_ssh_host | 将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置. |
ansible_ssh_port | ssh端口号.如果不是默认的端口号,通过此变量设置. |
ansible_ssh_user | 默认的 ssh 用户名 |
ansible_ssh_pass | ssh 密码(这种方式并不安全,我们强烈建议使用 --ask-pass 或 SSH 密钥) |
ansible_sudo_pass | sudo 密码(这种方式并不安全,我们强烈建议使用 --ask-sudo-pass) |
ansible_sudo_exe (new in version 1.8) | sudo 命令路径(适用于1.8及以上版本) |
ansible_connection | 与主机的连接类型.比如:local, ssh 或者 paramiko. Ansible 1.2 以前默认使用 paramiko.1.2 以后默认使用 'smart','smart' 方式会根据是否支持 ControlPersist, 来判断'ssh' 方式是否可行. |
ansible_ssh_private_key_file | ssh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况. |
ansible_shell_type | 目标系统的shell类型.默认情况下,命令的执行使用 'sh' 语法,可设置为 'csh' 或 'fish'. |
上表只是列出部分参数,最新的详细参数信息请查询官网。