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 
 
参考:
posted @ 2017-12-21 15:26  白糖365  阅读(1000)  评论(0编辑  收藏  举报