ansible

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'.

上表只是列出部分参数,最新的详细参数信息请查询官网。

posted @ 2019-09-04 00:59  长风七万里  阅读(204)  评论(0编辑  收藏  举报