--创建时间:2021年3月9日

--修改时间:2021年3月9日

--作者:飞翔的小胖猪

yaml语法格式

  • 每单一文件第一行,使用 "---"开始。在结尾的时候使用三个点“...”来表示,不是必须的。
  • 次行开始写playbook的内容。
  • 使用#表示注释代码。
  • 缩进必须是统一的,不能出现“tab”和“空格”混用。
  • 同一级别的缩进一致。
  • yaml文本对大小写敏感。
  • 多个k/v可同行写也可单独成行写,在一行中书写多个K/V时每个键值对使用“,”隔开。
  • K/V中的v可以是单个字符串亦可时另一个列表。
#基础playbook格式
---
- hosts: 应用主机
gather_facts:no 设置不收集被控主机信息
tasks:
- name: 自定义task名
模块名: 模块相关参数
- name: 自定义task名
模块名: 模块相关参数
...

handlers/notify

handlers本质上是tasks list,与notify成对出现。类似于触发器,当playbook剧本中的某个task满足条件后会通过notify调用对应的handlers任务。

---
- hosts: test8
remote_user: root
gather_facts: no
vars:
- host: lvant tasks:
- name: copy config to remote hosts
copy: src=/tmp/test1 dest=/tmp/3333
notify: touch file handlers:
- name: touch file
file: path=/tmp/{{testvar}} state=touch

主机定义

playbook文件定义在那些主机上生效需要关键参数是hosts,该参数的主机列表来源于/etc/ansible/hosts(默认情况下)定义的主机清单。

host1                    #当台主机,限定作用于某一个主机。
host1:host2 #某两台主机,使用 : 号隔开表示或者。
group1:group2 #或者,两个组的并集
group1:&group2 #与,两个组的交集
group1:!group2 #在group1组,但不在group2组

变量

变量定义:   K=V ,如variable=values

变量调用: {{ variable }}   或  “{{ variable }}”

变量定义方式:

  • 命令行中定义: ansible-playbook -e k=V
  • yaml文件中定义:
    ---
    - hosts: all
      vars:
       - host: lvant
       - system_os: centos
      tasks:
       - name: file create
         file: path=/root/{{ host }}_{{ system_os }}.file state=touch
  • 使用变量文件:
    # cat vars.yml      //变量文件
    ---
    system_version: 7
    child_version: 6

    # cat test_file_var.yml //playbook文件
    ---
    - hosts: all
      vars_files:
       - vars.yml
      tasks:
       - name: touch file
         file: path=/root/{{ system_version }}_{{ child_version }}.filetxt state=touch
  • /etc/ansible/hosts中定义:
    #其中host和machine就是自定义的变量
    [lvs]
    lvs1 host=test1 ansible_ssh_host=192.168.111.11 ansible_ssh_user='root' ansible_ssh_pass='yinwan' ansible_ssh_port=22
    lvs2 host=test2 ansible_ssh_host=192.168.111.12 ansible_ssh_user='root' ansible_ssh_pass='yinwan' ansible_ssh_port=22 [lvs:vars]
    machine=lvs

条件语句

when写在tasks下模块下,表示满足对应条件时执行相关操作。

---
- hosts: websrvs
remote_user: root
tasks:
- name: "shutdown RedHat flavored systems"
shell: echo "`date` test_when ." >> /var/log/message
when: ansible_os_family == "RedHat"

迭代操作

迭代操作的实质是在tasks中的模块中设置固定变量{{ item }},然后通过依次调用模块下with_items中定义的值。

[root@135 7_with_items]# cat test_item.yaml
---
- hosts: all
gather_facts: no
tasks:
- name: echo info
shell: echo "`date` {{ item }}"
with_items:
- haha
- bebe
- test11
- name: user create
user: name=lvanwww system=yes

迭代嵌套

---
- hosts: all
gather_facts: no
tasks:
- name: create group
group: name={{ item }} state=present
with_items:
- test222
- test333
- test444
- name: create user
user: name={{ item.name }} group={{ item.group }} state=present
with_items:
- { name: 'test22', group: 'test222' }
- { name: 'test33', group: 'test333' }
- { name: 'test44', group: 'test444' }

ansible复习笔记_playbook-从零到无的更多相关文章

  1. ansible复习笔记_基础-从零到无

    --创建时间:2021年1月25日 --修改时间:2021年3月9日 --作者:飞翔的小胖猪 前言 该文档仅作为作者复习ansible使用,对格式和流程没有做过多的编排和概述.不喜勿喷. 基础 ans ...

  2. ansible复习笔记_role-从零到无

    --创建时间:2021年3月9日 --修改时间:2021年3月9日 --作者:飞翔的小胖猪 roles是各个单独功能性模块的集合,通过分别将变量.文件.任务.模板及处理器放置于单独的目录中,并可以便捷 ...

  3. Ansible安装及初始化-从零到无

    --时间:2019年1月12日 --作者:飞翔的小胖猪 前言 说明 文档指导读者在Redhat系列操作系统上安装Ansible软件及初始化配置,包括服务端及被控端的配置文件设置. 以下所有操作都在An ...

  4. Java二次复习笔记(1)

    Java二次复习笔记(1) Java采用的默认字符编码集是Unicode. byte=byte+byte报错,值为int,而byte+=byte不报错.同样short = short+short报错, ...

  5. 斜率优化DP复习笔记

    前言 复习笔记2nd. Warning:鉴于摆渡车是普及组题目,本文的难度定位在普及+至省选-. 参照洛谷的题目难度评分(不过感觉部分有虚高,提高组建议全部掌握,普及组可以选择性阅读.) 引用部分(如 ...

  6. 数位DP复习笔记

    前言 复习笔记第五篇.(由于某些原因(见下),放到了第六篇后面更新)CSP-S RP++. luogu 的难度评级完全不对,所以换了顺序,换了别的题目.有点乱,见谅.要骂就骂洛谷吧,原因在T2处 由于 ...

  7. FFT/NTT复习笔记&多项式&生成函数学习笔记Ⅲ

    第三波,走起~~ FFT/NTT复习笔记&多项式&生成函数学习笔记Ⅰ FFT/NTT复习笔记&多项式&生成函数学习笔记Ⅱ 单位根反演 今天打多校时 1002 被卡科技了 ...

  8. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  9. Java基础复习笔记系列 八 多线程编程

    Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...

随机推荐

  1. iptables规则管理

    查看规则 iptables -t filter -L INPUT -n -v --line  省略-t选项时,表示默认操作filter表中的规则 添加规则 注意点:添加规则时,规则的顺序非常重要  - ...

  2. 洛谷 8 月月赛 & 「PMOI」Round · 04

    T1 T166167 「PMOI-4」人赢 题目大意 给一个数列的前两项分别为\(n\)和\(m\) 当\(i\geq3\)时\(a_i = a_{i-1}*a_{i-2}\)的个位 给定\(n\), ...

  3. TensorFlow 2.0 快速入门指南 | iBooker·ApacheCN

    原文:TensorFlow 2.0 Quick Start Guide 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则>,生活 ...

  4. iBooker AI+财务提升星球 2020.4 热门讨论

    比特币量化套利的心路历程(附python量化招聘)(分享自知- 如何选择一份好的工作? 你知道为什么大家都想去好公司吗? 不- #财务知识# 可转债套利 辉丰转债128012套利之三个知道- #财务知 ...

  5. web项目获取全路径、端口、项目名等

    感谢大佬:https://blog.csdn.net/u010180031/article/details/52369537 request.getSchema(),返回的是当前连接使用的协议,一般应 ...

  6. Java 自定义窗体(标题栏、窗体背景)

    感谢大佬:https://blog.csdn.net/ltx06/article/details/28996839 最近在书上看到这篇文章,觉得挺有意思.与大家分享一下,具体可以参见明日科技出版的&l ...

  7. UNIX系统上的抓包工具tcpdump常用命令说明

    tcpdump 介绍 tcpdump采用命令行方式对接口的数据包进行筛选抓取,其丰富特性表现在灵活的表达式上. 不带任何选项的tcpdump,默认会抓取第一个网络接口,且只有将tcpdump进程终止才 ...

  8. Swift 学习网址精选 By HL

    虽然目前iOS大部分的项目开发语言用的不是Swift,但随着Swift的不断强大,取代Objective-C 指日可待,所以学习Swift是十分必要的.但毕竟是亲儿子,目前只有Foundation被翻 ...

  9. DbUnit入门实战

    原文地址: http://yangzb.iteye.com/blog/947292 相信做过单元测试的人都会对JUnit 非常的熟悉了, 今天要介绍的DbUnit(http://dbunit.sour ...

  10. TableView 常用技巧与功能详解

    分割线顶格iOS8 UITableview分割线顶格的做法 //iOS8 Cell分割线顶格 if ([_tableView respondsToSelector:@selector(setSepar ...