ansible复习笔记_playbook-从零到无
--创建时间: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-从零到无的更多相关文章
- ansible复习笔记_基础-从零到无
--创建时间:2021年1月25日 --修改时间:2021年3月9日 --作者:飞翔的小胖猪 前言 该文档仅作为作者复习ansible使用,对格式和流程没有做过多的编排和概述.不喜勿喷. 基础 ans ...
- ansible复习笔记_role-从零到无
--创建时间:2021年3月9日 --修改时间:2021年3月9日 --作者:飞翔的小胖猪 roles是各个单独功能性模块的集合,通过分别将变量.文件.任务.模板及处理器放置于单独的目录中,并可以便捷 ...
- Ansible安装及初始化-从零到无
--时间:2019年1月12日 --作者:飞翔的小胖猪 前言 说明 文档指导读者在Redhat系列操作系统上安装Ansible软件及初始化配置,包括服务端及被控端的配置文件设置. 以下所有操作都在An ...
- Java二次复习笔记(1)
Java二次复习笔记(1) Java采用的默认字符编码集是Unicode. byte=byte+byte报错,值为int,而byte+=byte不报错.同样short = short+short报错, ...
- 斜率优化DP复习笔记
前言 复习笔记2nd. Warning:鉴于摆渡车是普及组题目,本文的难度定位在普及+至省选-. 参照洛谷的题目难度评分(不过感觉部分有虚高,提高组建议全部掌握,普及组可以选择性阅读.) 引用部分(如 ...
- 数位DP复习笔记
前言 复习笔记第五篇.(由于某些原因(见下),放到了第六篇后面更新)CSP-S RP++. luogu 的难度评级完全不对,所以换了顺序,换了别的题目.有点乱,见谅.要骂就骂洛谷吧,原因在T2处 由于 ...
- FFT/NTT复习笔记&多项式&生成函数学习笔记Ⅲ
第三波,走起~~ FFT/NTT复习笔记&多项式&生成函数学习笔记Ⅰ FFT/NTT复习笔记&多项式&生成函数学习笔记Ⅱ 单位根反演 今天打多校时 1002 被卡科技了 ...
- Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...
- Java基础复习笔记系列 八 多线程编程
Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...
随机推荐
- golang中的匿名函数三种用法
package main import ( "fmt" "strconv" ) func main() { // 匿名函数的使用:方式1 f1 := func( ...
- gin中模型的绑定和验证
要将请求体绑定到结构体中,使用模型绑定. Gin目前支持JSON.XML.YAML和标准表单值的绑定(foo=bar&boo=baz). Gin使用 go-playground/validat ...
- CSS八种让人眼前一亮的HOVER效果
一.发送效果 HTML <div id="send-btn"> <button> // 这里是一个svg的占位 Send </button> & ...
- Kubernetes:Pod基础知识总结
Blog:博客园 个人 官方文档详尽介绍了Pod的概念. 概念 Pods are the smallest deployable units of computing that you can cre ...
- 洛谷P1002过河卒java100分题解
题目描述如图: 这道题我以前以回溯的方法做,只能拿到60分 现在才发现是道动态规划题 解题思路: 创建一个(0,0)到终点打小的二维数组表示棋盘 每个坐标的值为此位置到终点的路数 最下方一排和最右方一 ...
- CF1399F Yet Another Segments Subset
首先注意一下题面要求,使得选出的线段两两要么包含要么不相交,也就是说一条线段可能会出现不相交的几条线段,而这些线段上面也可能继续这样包含线段.然后我们可以发现我们要做的实际上是在这条线段上选取几条线段 ...
- MySQL 新增表分区很慢,转移大表数据
问题: MySQL (version 5.7.26) 数据库有一批表 xxx_yyy,由于评估的数据量可能比较大,因此每张表都设置了表分区,把每个月的数据保存在单独的分区里. 那么如果每年年末,没有提 ...
- 电脑预装Office2016打开Word时点击保存弹出“word无法启动转换器RECOVR32.CNV”对话框问题的修复方法
感谢大佬:https://blog.csdn.net/qq_41969790/article/details/85161701 1.问题描述:电脑预装的Office2016,家庭和学生版正版.每次打开 ...
- 【Github资源大汇总】 - 王朋
1.Github-iOS备忘 (国人总结的上百个Github上的开发框架和完整App) http://github.ibireme.com/github/list/ios/ 2.不少优秀的 iOS, ...
- @synthesize基本概念
1.什么是@synthesize @synthesize是编译器的指令 什么是编译器的指令 ? 编译器指令就是用来告诉编译器要做什么! @synthesize会让编译器做什么呢? @synthesiz ...