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 
 
参考:
相关文章
相关标签/搜索