安装Ansible

控制节点

  1. 用pip安装Ansible

pip install paramiko PyYAML Jinja2 httplib2 six --user ansible
python -m pip install --user ansible

我不知道这样调用的是pip还是pip3,但是我看日志,好像是用Python3的目录下找的模块,应该是pip3。

由于pip不与系统包管理器协调,它可能会更改您的系统,使其处于不一致或无法运行的状态。对于macOS尤其如此。建议使用–user安装。

测试安装结果

测试之前,一定要ssh一次,将目标机器的码加入到known_hosts文件中,否则无法正常测试


127.0.0.1 | 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."
}

我看到有教程可以设置环境便令HOST_KEY_CHECKING=False,但实践中没有效果,所以就放弃环境变量的方案,最后使用了ansible.cfg文件的方案:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10

mkdir -p /etc/ansible && tee tee /etc/ansible/ansible.cfg <<-'EOF'

[defaults]
host_key_checking = False

EOF

ansible all -m ping --ask-pass

方案一

对官方的方案进行改进:

1
2
3
4
5
6
7

yum install -y sshpass

mkdir -p /etc/ansible && echo "127.0.0.1" > /etc/ansible/hosts

ansible all -m ping --ask-pass

方案二

来自网络上的方案:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12

yum install -y sshpass

mkdir -p /etc/ansible && tee tee /etc/ansible/hosts <<-'EOF'

[test]
127.0.0.1 ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass=123456

EOF

ansible test -m ping

失败的测试方案

  1. 这是官网提供的方案,这个方案不可行,我认为是ANSIBLE_HOSTS环境变量不在支持了
1
2
3
4
5
6

echo "127.0.0.1" > ~/ansible_hosts
export ANSIBLE_HOSTS=~/ansible_hosts

ansible all -m ping --ask-pass

托管节点

  1. 安装Python3

参考教程

  1. Ansible 日常使用技巧 - 运维总结

    干货很多,但是目前能接触到的比较少。

  2. ansible配置文件解读

  3. ansible不配置ssh免密钥,使用密码登录

  4. ansible 提示安装sshpass