Ansible-Playbook

YAML语法

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进时是使用Tab键还是使用空格⼀定要达到统⼀
  • 相同层级的元素必须左侧对齐即可
---
class:
 - name: stu1
   num: 001
 - name: stu2
   num: 002
 - name: stu3
   num: 003
...

YAML 语法校验

python -c 'import yaml,sys; print
 yaml.safe_load(sys.stdin)' < demo.yml

Play 属性

  • name
  • hosts
  • tasks
  • become/become_user
  • remote_user
---
- name: the first play example
  hosts: webservers
  remote_user: root
  tasks:
    - name: install nginx package
      yum: name=nginx state=present
    - name: copy nginx.conf to remote server
      copy: src=nginx.conf
 
dest=/etc/nginx/nginx.conf      
    - name: start nginx server
      systemd:
        name: nginx
        enabled: true
        state: started
...

Playbook语法校验

ansible-playbook demo.yml --syntax-check

Ansible变量类型

全局变量

ansible all -m debug -a "msg='my key is {{key}}'" -e "key=value"

剧本变量

---
- name: play vars
  hosts: all
  vars:
    user: hapa
    home: /home/hapa
...
#当vars很多时,可通过vars_files定义
#使用变量时格式"{{user}}"

资产变量

#####主机变量#####
[webservers]
192.168.188.9 home="/home/hapa"
#####主机组变量#####
[webservers:vars]
home="/home/hapa"

Inventory 内置变量

  • ansible_ssh_host
  • ansible_ssh_port
  • ansible_ssh_user

Facts变量

由setup 模块完成,它收集了有关被管理服务器的操作系统版本服务器IP地址、主机名,磁盘的使用情况、CPU个数、内存大小等等有关被管理服务器的私有信息。

ansible all -i localhost, -c local -m setup -a "filter=*memory*"
gather_facts: no
   # 关闭facts变量收集功能,默认都会收集。

注册变量

用于保存⼀个task任务的执行结果, 以便于debug时使用,通过register关键字实现。

---
- name: install a package and print the result
  hosts: webservers
  remote_user: root
  tasks:
    - name: install nginx package
      yum: name=nginx state=present
      register: install_result
    - name: print result
      debug: var=install_result
...

变量优先级

当⼀个变量同时在全局变量、剧本变量和资产变量中定义时,优先
级最高的是全局变量,其次是剧本变量,最后才是资产变量。

Ansible 任务控制

when

支持以下运算符:

==
!=
> >=
< <=
is defined
is not defined
true
false
and
or
- name: check nginx syntax
  shell: /usr/sbin/nginx -t
  register: nginxsyntax
- name: print nginx syntax
  debug: var=nginxsyntax
- name: start nginx server
  service: name=nginx state=started
  when: nginxsyntax.rc == 0

循环

vars:
  creatusers:
    - nginx
    - mysql
    - www
tasks:
  - name: create user
    user: name="{{ item }}" state=present
    with_items: "{{ createuser }}"
   

新版本

vars:
  creatusers:
    - nginx
    - mysql
    - www
tasks:
  - name: create user
    user: name="{{item}}" state=present
    loop: "{{createuser}}"

Tags属性

通过Play中的tags 属性,可选择需要执行的。

ansible-playbook demo.yml -t demotags

Handlers 属性

当配置文件发生变化的时候才去触发TASK,可通过handlers属性。

tasks:
  - name: update nginx config
    copy: src=nginx.conf dest=/etc/nginx/
    notify: reload nginx server
handlers:
  - name: reload nginx server
    service: name=nginx state=reloaded
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇