Ansible入门使用
最近在学习ansible,在此记录一下使用过程 --2017年12月21日 15:22:02
一:server端yum安裝Ansible
serverip:192.168.1.46 # Redhat/CentOS Linux上,Ansible目前放在的epel源中 sudo yum install epel-release -y sudo yum install ansible -y ansible --version #查看是否安装成功
二:基本配置访问
如需通过 192.168.1.46 管理 192.168.1.47 192.168.1.48 192.168.1.49
在 192.168.1.46 生成一个密钥,公钥传到各自服务器
# ssh-keygen -t rsa -f ./.ssh/id_rsa.pub -P ""
传密钥到各自服务器
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.47
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.48
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.49
如果服务器是在同一连续IP段下,可使用
# for i in {1..4}; do ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.78.1$i; done
配置ansible主机清单,使用yum安装的文件(Host Inventory)在 /etc/ansible/host中
vi /etc/ansible/hosts
添加
[myhost]
192.168.1.47
192.168.1.48
192.168.1.49
[zabbix-host]
192.168.1.49
192.168.1.50:9888 #如果主机端口号不是22,使用冒号分隔端口号
安装完毕直接在46上面输入一条命令测试:
# ansible all -m command -a "who"
2.1 或者不传key,直接在 /etc/ansible/hosts 填入对应服务器账号密码即可(这种比较方便),如:
[linux]
192.168.1.70 ansible_ssh_user="root" ansible_ssh_pass="1qaz" ansible_su_pass="1qaz"
[windows]
192.168.1.44 ansible_ssh_user="Administrator" ansible_ssh_pass="1qaz" ansible_ssh_port=5985 ansible_connection="winrm" ansible_winrm_server_cert_validation=ignore
至此,ansible已经安装成功并可以操作远程机器
三:使用说明
ansible相关程序文件:
/usr/bin/ansible:命令行工具
#命令格式:
ansible <pattern_goes_here> -m <module_name> -a <arguments>
#例如:
ansible all -m copy -a 'src=/etc/my.cnf dest=/etc/'
#几个重要参数的含义:
-i #指定inventory文件(主机定义文件)
all #表示在host文件中定义的所有的主机,可以替换成响应的组名或IP地址
#针对于主机可以使用匹配规则(所有的匹配都基于配置文件中的主机)
IP地址: ansible 192.168.239.132
IP匹配: ansible 192.168.239.*
IP匹配: ansible *
组匹配: ansible 组名:&hostname <表示这个组跟其他组的一个主机>
组匹配: ansible 组名:!hostname <表示这个组但是出除去这个组的这个主机>
#类似的匹配还很多,几乎能想到的匹配都能支持,具体参照http://docs.ansible.com/intro_patterns.html
-m #指定使用哪个模块,默认采用command模块
-a #指定模块的参数,每个模块都有相应的模块参数
-u #指定远端机器的用户
/usr/bin/ansible-doc:帮助文档
/usr/bin/ansible-doc -s yum #查询yum相关帮助
/usr/bin/ansible-playbook:剧本执行工具
/etc/ansible/ansible.cfg:主配置文件
/etc/ansible/hosts:管理的主机清单(Host Inventory)
/etc/ansible/roles:角色存放处
注意:<host-pattern>默认读取/etc/ansible/hosts,也可以指明自定义文件路径
-iPATH, --inventory=PATH:指明使用的host inventory文件路径
四:详细使用要点说明
- ansible-doc -l 查看总共有哪些模块
- ansible-doc ping 显示某个模块的用法
- ansible-doc -s ping 显示某个模块在playbooks中的代码片段
安装问题:
管理端ansible出现ssh-copy-id: command not found 错误
yum -y install openssh-clients
参考: