用ansible 来管理远程的主机,最大的好处是方便,ansible不用在远程的主机上安装ansible的客户端,ansible只要能通过ssh连接上远程主机就
能对它进行管理。也就是说ansible是通过ssh来连接远程主机的,于是就引出了连接到远程主机的两种认证方式,一种是用户名+密码,另一种是
~.ssh/id_rsa ~.ssh/id_rsa.pub 通过秘钥对的方式来认证;自然ansible也是逃不出已经有的条条框框。
一、ansible通过用户名+密码方式认证的相关变量:
ansible_host=远程主机ip ansible_port=远程主机的ssh端口 ansible_user=远程主机中的一个用户名 ansible_ssh_pass=远程主机用户所对应的密码
在这里需要在主机上安装sshpass:
sshpass下载地址:http://sourceforge.net/projects/sshpass/
运行下列命令安装
tar -zxvf sshpass-1.05.tar.gz cd sshpass-1.05 #./configure ./configure --prefix=/opt/sshpass #指定安装目录 --prefix=/opt/sshpass(也可不指定) make && make install
安装完成后输入sshpass出现如下提示即安装成功:
# sshpass -h Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters -f filename Take password to use from file -d number Use number as file descriptor for getting password -p password Provide password as argument (security unwise) -e Password is passed as env-var "SSHPASS" With no parameters - password will be taken from stdin -h Show help (this screen) -V Print version information At most one of -f, -d, -p or -e should be used
二、ansible通过秘钥认证相关的变量:
ansible_host=远程主机ip ansible_port=远程主机的ssh端口 ansible_ssh_private_key_file=本地用户的ssh密钥文件(私钥)
注意:
[root@ansible_master ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub 10.1.6.72
-bash: ssh-copy-id: command not found
报错了
解决方法:
yum -y install openssh-clients
三、有时候远程用户没有"权限"完成特定的操作,它要sudo一下才行,ansible中就要设置一下了:
ansible_become_user=root ansible_become=true
ansible_become_user=root 说的是到时候su到root身份执行操作,注意单单只是设置ansible_become_user是不会su的,还有一个开关控制着
是不启动su,这个开关就是ansible_become!