02-Ansible命令

175 阅读2分钟

Ansible系列命令

command:
- ansible
  ansible-doc
  ansible-playbook
  ansible-vault
  ansible-console
  ansible-galaxy
  ansible-pull

ansible-doc: 显示模块帮助
  - ansible-docs [option] [moudle...]
  - -a: 显示所有模块的文档
  - -l: --list 列出可用模块
  - -s: --snippet 显示指定模块的playbook片段
  
示例:
  - ansible-doc -l 列出所有模块
  - ansible-doc ping 查看指定模块的文档
  - ansible-doc -s ping 查看指定模块的用法
  
ansible: ansible通过ssh实现配置管理、应用部署、任务执行等功能
  - 用法: ansible <host-pattern> [-m moudle_name] [-a args]
  - --version: 显示版本
  - -m: moudle 指定模块,默认为command
  - -v: 详细过程,-vv -vvv更加详细
  - --list-hosts: 显示主机列表,可简写--list
  - -k: --ask-pass 提示输入ssh连接密码,默认使用key验证
  - -K: --ask-become-pass 提示输入sudo时的口令
  - -C: --check 检查但是不执行
  - -T: --timeout=n 执行超时时间,默认10s
  - -u: --user=remote_user 远程执行用户
  - -b: --become 代替旧版本的sudo切换

Ansible的Host匹配

---
Hosts:
- All: 表示所有主机
- *通配符: 
  - ansible "*" -m shell -a "echo 123"
  - ansible "192.168.1.*" -m shell -a "echo 123"
- 逻辑与: 使用:&符号,注意需要使用单、双引号引起来
  - ansible "web:&db" -m shell -a "echo 123"
- 或关系: 使用冒号:隔开
  - ansible "web:db" -m shell -a "echo 123"
  - ansible "192.168.1.2:192.168.1.3" -m shell -a "echo 123"
- 逻辑非: 使用:!符号
  - ansible "web:!db" -m shell -a "echo 123"   #在web组但是不在db组的机器
- 正则表达式:
  - ansible "we[ab]" -m shell -a "echo 123"

ansible命令执行过程

过程如下:
  - 1、加载自己的配置文件,默认/etc/ansible/ansible.cfg
  - 2、加载自己对应的模块文件,如command
  - 3、通过ansible将模块或者命令生成对应的临时py文件,并将该文件传输至远程服务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-$N/xxx.py
  - 4、给文件执行权限
  - 5、执行并返回结果
  - 6、删除临时py文件,sleep 0 退出
执行状态说明:
  - 绿色: 执行成功并且不需要做改变的动作
  - 黄色: 执行成功并且变更了主机
  - 红色: 执行失败