## 第2章 Ansible基础元素
ansible.cfg:
? Ansible读取配置文件的顺序依次为是当前命令执行目录--》用户家目录-->/etc/ansible.cfg
? [privilege_escalation],针对sudo用户提权配置
```bash
#随机生成公私钥对,ssh-keygen是linux下认证密钥生成、管理和转换工具
ssh-keygen -N " " -b 4096 -t rsa -C "stanley@magedu.com" -f /root/.ssh/stanley.rsa
#为本机添加密钥认证
ssh-copy-id -i /root/.ssh/stanley.rsa root@localhost
```
命令格式:ansible <host-partter> [option]
```bash
-m NAME,--module-name=NAME:指定使用的模块
-u USERNAME,--user=USERNAME:指定远程主机以USERNAME运行命令。
-s ,--sudo:相当于linux下的sudo命令。新版改为--become,-b
-U SUDO_USERNAEM,--sudo-user=SUDO_USERNAME:使用sudo,相当于linux下的sudo命令
--ask-vault-pass:加密playbook文件时提示输入密码
-D,--diff
-e EXTRA_VARS,--extra-vars=EXTRA-VARS:
--flush-cache:
--force-handlers:
-i INVENTTORY:
--list-tags:
--list-tasks:
--skip-tags=SKIP_AT_TASK:
--start-at-task=
--step:
--syntax-check:
-t TAGS,--tags=TAGS:
```
Ansible Inventory 配置及详解
? 默认读取/etc/ansible/hosts,Invertory可以同时存在多个,而且支持动态生成。
```bash
# 定义组变量
[groupservers]
[groupservers:vars]
# 定义组嵌套
[webservsers:children]
#多重变量定义
#1,Inventory配置文件 2,playbook中定义vars定义区域 3,Roles中vars目录下的文件 4,Roles同级目录group_vars和hosts_vars目录下的文件
```
Ansible 与正则
```bash
#all(全量)匹配 all *
ansible all -m ping
ansible "*" -m ping
ansible 192.168.1.* -m ping
#逻辑或(or)匹配
ansible "web1:web2" -m ping
#逻辑非匹配
webservers:!phoenix
#逻辑与(&)匹配
webservers:&staging
#多条件组合
webservers:dbservers:&staging:!phoenix
#模糊匹配
*.magedu.com
one*.com:dbservers
#域切割
str = ‘12345678‘
print str[0:1]
#正则匹配
~(web|db).*\.example\.com
```
原文:https://www.cnblogs.com/landerhu/p/12842226.html