Ansible安装配置和基本使用( 二 )

/etc/ansible/hosts,通常我们可能会根据项目需求,起一个见名知意的其他名称,或者也会直接在每一套我们需要组织的项目根目录下存放一个hosts的清单文件 。
Inventory主机清单文件可以有多个,在使用plyabook时可以手动通过-i参数指定你需要使用的清单文件名称 。
Inventory文件遵循了ini配置文件的风格,一个section就表示一组隶属于同一个分组的被管理机器 。目标被管理节点默认均被视为使用SSH的22端口,但是当部分节点使用非22端口号时,也可以在清单文件中进行指定 。
被管理节点可以是以IP的形式写在清单文件中,也可以使用域名的形式 。
[webservers]172.16.0.10172.16.0.11172.16.0.[20:30]alpha.ayunw.cnbeta.ayunw.cnapache[10:20].ayunw.cnnginx.ayunw.cn:2333[dbservers]db01.ayunw.cndb02.ayunw.cnmysql-[a:z].ayunw.cn10.25.1.5610.25.1.57三、实战演练3.1 环境介绍我这里包括ansible主控机和另外四台被管理机器,以下是我自定义的一个Inventory文件,可以作为备忘用 。
mkdir ansible-examplevim hosts[ayunw]10.10.108.3410.10.108.3010.10.108.3110.10.108.3210.10.108.33以下是在ansible的默认hosts配置文件中配置,如果不使用 -i ./ansible-example/hosts,则ansible默认使用该清单文件 。
[root@ansible-server ~]# cat /etc/ansible/hosts[websrvs]10.10.108.[30:33][dbsrvs]10.10.108.30[appsrvs]10.10.108.[30:33]3.2 Ansible相关命令工具

  • /usr/bin/ansible:主提序,临时命令执行工具
  • /usr/bin/ansible-doc: 查看配置文档,模块功能查看工具
  • /us/bin/ansible-galaxy:下载/上传优秀代码或Roles模块的自网平台
  • /usr/bin/ansible-playbook:定制自动化任务,编排剧本工具
  • /usr/bin/ansible-pull:远程执行命令的工具
  • /usr/bin/ansible-vault:文件加密工具
  • /usr/bin/ansible-console:基于Console界面与用户交互的执行工具
以上命令,最常用的两个:ansibleansible-playbook
Ansible安装配置和基本使用 。小编来告诉你更多相关信息 。
Ansible安装配置和基本使用
,这两个命令就是ansible用来实现批量管里的关键 。
  • ansible命令通常用于一次性或者临时的任务,一般一条命令即可实现任务 。通常我们称这种方式为:ad-hoc;
  • ansible-playbook主要是应用于针对大型项目的部署,需要通过多个yaml格式的文件(以yaml或者yml结尾)组合使用,所以一般需要进行提前规划目录,整合yaml文件 。
接下来介绍几个比较常用的命令 。
3.2.1 ansible-doc该命令主要用于显示针对某个模块的使用方法的帮助信息 。如果忘记了模块或者模块的用法,可以通过该命令快速查看 。
ansible-doc [options][module...]# 列出可用模块-l,--list# 显示指定模块的playbook片段-s,--snippet如:# 列出所有模块ansible-doc -l # 查看指定模块帮助用法ansible-doc copy # 查看指定模块帮助用法[简化版的帮助]ansible-doc -s copy注意:在使用ansible批量管理操作之前,需要先对所有主机做一个免密认证,以确保每个被管理节点都能在ansible管理节点上通过ssh协议免密登录到被管理节点 。
免密的三种实现方式:
  • 基于ssh-keygen + shell + sshpass`方法实现
  • 基于expect实现;
  • 基于ansible-playbook实现 。
ad-hoc 方式常用参数说明:
  • --version:显示版本
  • -m module:指定模块,默认为command
  • -V:详细过程-vv -vvv更详细
  • --list-hosts:显示主机列表,可简写–list
  • -k,--ask-pass:提示输入ssh连接密码,默认key验证
  • -C,--check:检查,并不执行
  • -T,--timeout=TIMEOUT:执行命令的超时时间,默认10s
  • -u,--user=REMOTE_USER:执行远程执行的用户
  • -b,--become:代替旧版的sudo切换
  • --become-user=USERNAME:指定sudo的runas用户,默认为root
  • -K,--ask-become-pass:提示输入sudo时的口令
使用 * 通配符
# 以下两条命令执行效果相同ansible all -m pingansible \"*\" -m pingansible 10.10.108.* -m pingansible \"*srvs\" -m ping [root@ansible-srv1 ansible-example]# ansible \"*\" --list-hostshosts (4):10.10.108.3010.10.108.3110.10.108.3210.10.108.33使用逻辑或
[root@ansible-srv1 ansible-example]# ansible \"websrvs:appsrvs\" -m ping10.10.108.31 | SUCCESS => {\"ansible_facts\": {\"discovered_interpreter_python\": \"/usr/bin/python\"},\"changed\": false,\"ping\": \"pong\"}10.10.108.32 | SUCCESS => {\"ansible_facts\": {\"discovered_interpreter_python\": \"/usr/bin/python\"},\"changed\": false,\"ping\": \"pong\"}10.10.108.33 | SUCCESS => {\"ansible_facts\": {\"discovered_interpreter_python\": \"/usr/bin/python\"},\"changed\": false,\"ping\": \"pong\"}10.10.108.30 | SUCCESS => {\"ansible_facts\": {\"discovered_interpreter_python\": \"/usr/bin/python\"},\"changed\": false,\"ping\": \"pong\"}[root@ansible-srv1 ansible-example]# ansible \"10.10.108.30:10.10.108.33\" -m ping10.10.108.30 | SUCCESS => {\"ansible_facts\": {\"discovered_interpreter_python\": \"/usr/bin/python\"},\"changed\": false,\"ping\": \"pong\"}10.10.108.33 | SUCCESS => {\"ansible_facts\": {\"discovered_interpreter_python\": \"/usr/bin/python\"},\"changed\": false,\"ping\": \"pong\"}