最近在学习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"

以api的方式调用ansible_以api的方式调用ansible

 

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