安装
epel-release 真的好良心啊。
yum install -y epel-release
yum install -y ansible
顺带找一个 ubuntu 的安装版本
sudo sed -i -re 's/\w+\.archive\.ubuntu\.com/archive.ubuntu.com/g' /etc/apt/sources.list
sudo apt-get update
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
# 假装以上是需要做的,目前未测试,后补吧。
sudo apt-get install ansible
copy 文件
一气呵成,不含杂质,Mark 几个知识点。
ansible.cfg
Ansible 按照如下位置和顺序来查找ansible.cfg 文件:
1. ANSIBLE_CONFIG 环境变量所指定的文件。
2. ./ansible.cfg(当前目录下的ansible.cfg)。
3. ~/.ansible.cfg(主目录下的.ansible.cfg)。
4. /etc/ansible/ansible.cfg。
所以第二个选择相当不错。
第一次登陆报错
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.cfg文件中更改下面的参数:
[defaults]
host_key_checking = false
apt & yum
ubuntu
apt - Manages apt-packagesansible_distribution
Ansible - Conditionals
ssh
ssh - openssh-server
fatal: [172.16.232.132]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: connect to host 172.16.232.132 port 22: Connection refused\r\n", "unreachable": true}
sudo apt-get install openssh-server
sudo service ssh start
root can’t login
fatal: [172.16.232.132]: UNREACHABLE! => {"changed": false, "msg": "Authentication failure.", "unreachable": true}
daemon-reload
fatal: [172.16.232.132]: FAILED! => {"changed": true, "cmd": "systemctl daemon-reload", "delta": "0:00:00.002450", "end": "2017-08-11 11:29:27.429572", "failed": true, "rc": 127, "start": "2017-08-11 11:29:27.427122", "stderr": "/bin/sh: 1: systemctl: not found", "stderr_lines": ["/bin/sh: 1: systemctl: not found"], "stdout": "", "stdout_lines": []}
- 原:
- name: enable ntp deamon
shell: systemctl daemon-reload
- 改:
- name: enable ntp deamon
systemd: daemon_reload=yes
依旧报错。
fatal: [172.16.232.132]: FAILED! => {"changed": false, "failed": true, "msg": "Failed to find required executable systemctl in paths: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"}
ubuntu 没有装 systemctl,不管了。
ansible_os_family 不生效
我果然还是太天真,Ubuntu 对应的是 Debian,CentOS 对应的是 RedHat。
[root@centos ansible-ntpservice]# ansible all -i inventory/ -m setup|more|grep ansible_os_family
"ansible_os_family": "Debian",
"ansible_os_family": "RedHat",
debug
- name: check ntp status
shell: ntpq -p
register: result
- name: print the ntp status
debug: var=result.stdout_lines
Git
- 1-11111/ansible-copyfile
http://git.oschina.net/zhoufen111111/ansible-copyfile
- 1-11111/ansible-ntpservice
http://git.oschina.net/zhoufen111111/ansible-ntpservice/tree/master/
执行
ansible-playbook -i inventory/ copyfile.yaml
ansible-playbook -i inventory/ ntpservice.yaml