ansible剧本
yaml简介
YAML是"YAML Ain't a Markup Language"(YAML不是一种置标语言)的递归缩写,早先YAML的意思其实是:"Yet Another Markup Language"(另外一种置标语言),但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名,YAML的官方定义很简单,即一种人性化的数据格式定义语言,其主要功能用途类似于XML或JSON,YAML使用空白字符和分行来分隔数据,且巧妙避开各种封闭符号,如:引号、括号等,以避免这些符号在复杂层次结构中变得难以辨认。YAML的语法与高阶语言类似,可以很简单地表述序列(java中的list)、杂凑表(java中的map)、标量(java中的基本类型等)数据结构,它重点强调可阅读性。
字典: key: value 列表: [] - 后缀名 yaml yml
特性:幂等性 不管执行多少遍,结果都是一样的
ansible-playbook [options] playbook.yml [playbook2 ...] -C, --check # 检查,白跑,干跑 -f FORKS, --forks=FORKS #用来做并发 --list-hosts # 列出主机列表 --syntax-check # 语法检查
简单用法
- hosts: web tasks: - name: creategroup group: name=alex10 - name: cretaeuser user: name=wusir10
hosts: gb tasks: - name: 第san个姑娘 dong: 第san个姑娘
- hosts: web tasks: - name: create{{ user }} user: name={{ user}}
第一种方式
ansible-playbook -e 'user=alexsb10' p2.yml
第二种方式
[db] 192.168.107.132 user=alexsb11 192.168.107.133 user=alexsb12
第三种方式
[db:vars] #表示组的参数 user=alexsb13
第四种方式
- hosts: db vars: - user: alexsb14 tasks: - name: create{{ user }} user: name={{ user}}
第五种传参方式
- hosts: db tasks: - name: sum shell: echo 7+8|bc register: user - name: createuser user: name={{user.stdout}}
传参方式的优先级
-e > playbook vars > hosts文件