CentOS/Ubunt安装配置集群管理工具Ansible的过程, 记录一下.
1, 安装
yum install ansible #CentOS6请先安装epel #Ubuntu的安装(从Ubuntu官方的源里安装的大概是1.4的版本,非常古老,这里我们启用其它的源) sudo apt-get install software-properties-common sudo apt-add-repository ppa:ansible/ansible sudo apt-get update sudo apt-get install ansible
2, 配置
vim ansible.cfg #主配置文件, 修改如下选项 host_key_checking = False #ask_sudo_pass = True //每次在本机执行ansible命令是否询问ssh密码 #ask_pass = True //每次在本机执行ansible命令时是否询问sudo密码 log_path = /var/log/ansible.log executable = /bin/bash remote_tmp = /tmp/.ansible/tmp #如果远程调用的命令需要sudo命令提权,需要开启如下几项 #以下几项在ansible1.9版本以后才有,请先运行ansible --version确定下版本 [privilege_escalation] become=True become_method=sudo become_user=root become_ask_pass=False
需要注意的是,ansible的配置文件并非只有这一个,ansible执行的时候会按照以下顺序查找配置项
ANSIBLE_CONFIG(环境变量)
ansible.cfg(位于当前目录中)
~/.ansible.cfg(位于家目录中)
/etc/ansible/ansible.cfg
3, 写入主机列表
vim /etc/ansible/hosts [dev] 192.168.32.39 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD 192.168.32.41 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD 192.168.32.42 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD 192.168.32.44 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD 192.168.32.144 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD [conv] 192.168.34.20 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD 192.168.34.22 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD 192.168.34.23 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD 192.168.34.24 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD 192.168.34.25 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD 192.168.34.26 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD 192.168.34.27 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD 192.168.34.34 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD 192.168.34.35 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD 192.168.34.36 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD 192.168.34.37 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD 192.168.34.38 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD 192.168.34.124 ansible_ssh_user=USERNAME ansible_ssh_pass=PASSWORD ansible_sudo_pass=PASSWORD
4, 测试
然后可以调用一下ansible命令测试一下 ansible dev -a 'uptime' ansible dev -a 'sudo uptime'
可能遇到的错误:
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, 找到host_key_checking项, 改成False, 或者在ssh_args配置项后面添加”-o StrictHostKeyChecking=no”.
可能遇到的错误:
failed to resolve remote temporary directory from ansible-tmp-1470207846.63-257290492417275: `( umask 77 && mkdir -p “` echo $HOME/.ansible/tmp/ansible-tmp-XXXXXXXXX `” )` returned empty string
解决办法:
使用本机的ssh登陆到第一个出错的server上再退出就好了.
参考文档:
http://www.tuicool.com/articles/AZVJ3qQ
http://www.361way.com/ansible-cfg/4401.html
http://www.361way.com/ansible-su/4882.html