一、ansible playbook简单使用

相当于是把模块写入到配置文件里面

vim /etc/ansible/test.yml //写入如下内容:

---
- hosts: 127.0.0.1
remote_user: root
tasks:
- name: test_playbook
shell: touch /tmp/test.txt

PS: 第一行是固定写法,hosts指定对哪些主机进行操作,如果是多台可以用逗号分隔,也可以使用主机组,如testhost

user参数指定使用什么用户登录远程机器

tasks指定一个任务,name为对任务的描述,执行过程中会打印出来,shell是ansible模块名字,执行test.yml

ansible-playbook test.yml

二、playbook设置变量

vim /etc/ansible/create_user.yml  //创建一个用户:

---
- name: create_user
hosts: 127.0.0.1
user: root
gather_facts: false
vars:
- user: "test"
tasks:
- name: create user
user: name="{{ user }}"

PS: name参数对该playbook做一个描述,可以省略;gather_facts参数指定在以下任务部分执行前,是否执行setup模块获取主机相关信息;vars参数,指定变量,这里指定一个user变量,值为test,值一定要用引号引住;

tasks里面的user为一个模块,下面的name为user模块的一个参数,增加的用户名字调用了上面user变量的值。

三、playbook循环

vim /etc/ansible/while.yml  //创建文件以及修改权限:

---
- hosts: 127.0.0.1
user: root
gather_facts: false
tasks:
- name: touch files and change mode for files
file: path=/tmp/{{ item }} state=touch mode=600
with_items:
- 1.txt
- 2.txt
- 3.txt

PS: with_items为循环的对象

四、playbook中的条件判断

vim /etc/ansible/when.yml  //写入如下内容:

---
- hosts: testhost
user: root
gather_facts: True
tasks:
- name: user when
shell: touch /tmp/when.txt
when: ansible_eno16777736.ipv4.address=="192.168.1.99"

PS: 只有满足when里面的条件时,才会去执行shell里面的内容;ansible 127.0.0.1 -m setup可以查看所有facter信息,即when里面条件在这里面去设置。

五、playbook中的handlers(tasks满足条件之后才执行)

vim /etc/ansible/handlers //写入如下内容:

---
- name: handlers test
hosts: 127.0.0.1
user: root
tasks:
- name: copy file
copy: src=/etc/passwd dest=/tmp/aaa.txt
notify: test handlers
handlers:
- name: test handlers
shell: echo "" >> /tmp/aaa.txt

PS:只有当copy模块真正执行后,才会去调用下面handlers相关操作,copy与notify的顺序没有关系;如果aaa.txt与passwd内容是一样的,就不会去执行handlers里面的shell命令。适用于配置文件发生更改后重启服务的操作。

ansible playbook基本操作的更多相关文章

  1. Ansible playbook API 开发 调用测试

    Ansible是Agentless的轻量级批量配置管理工具,由于出现的比较晚(13年)基于Ansible进行开发的相关文档较少,因此,这里通过一些小的实验,结合现有资料以及源码,探索一下Ansible ...

  2. ansible playbook实践(四)-如何调试写好的playbook文件

    有时,我们写了一个长长,功能很强悍的yaml文件,但是,我们有可能会担心,写的yaml文件是否正确,是否有漏洞危机,毕竟是要修改线上的机器,那么,有可能我们可以从以下几个检查维度来进行,确保在大规模应 ...

  3. ansible playbook批量改ssh配置文件,远程用户Permission denied

    最近手里的数百台服务器需要改/etc/ssh/sshd_config的参数,禁止root直接登陆,也就是说 [root@t0 ~]# cat /etc/ssh/sshd_config | grep R ...

  4. ansible笔记(11):初识ansible playbook(二)

    ansible笔记():初识ansible playbook(二) 有前文作为基础,如下示例是非常容易理解的: --- - hosts: test211 remote_user: root tasks ...

  5. ansible笔记(10):初识ansible playbook

    ansible笔记():初识ansible playbook 假设,我们想要在test70主机上安装nginx并启动,我们可以在ansible主机中执行如下3条命令 ansible test70 -m ...

  6. Ansible playbook 批量修改服务器密码 先普通后root用户

    fsckzy   Ansible playbook 批量修改服务器密码 客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3位 背景:服务器有CentOS6.7,SuSE9.10.11,r ...

  7. 写Ansible playbook添加zabbix被监控的对象

    本主题达到的效果是能通过编写Ansible Playbook,创建zabbix主机组,把被监控的对象加入到zabbix监控系统中,同时链接到对象的模板. 1.准备工作 在zabbix服务器上面,我们需 ...

  8. Ansible playbook基础组件介绍

    本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...

  9. ansible入门四(Ansible playbook基础组件介绍)

    本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...

随机推荐

  1. C语言跳出循环

    使用while或for循环时,如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用break或continue关键字. break关键字 在<C语言switch语句>一节中,我 ...

  2. CreateRemoteThreadex开启远程线程失败集合

    修改进程PE头 报错 修改进程_EPROCESS +0x12c SectionBaseAddress : 0x00bf0000 都会报错 不是有效的win32程序 错误号193 修改进程PEB +0x ...

  3. Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3

    一.现代操作系统的权限分离: 现代操作系统一般都至少分为内核态和用户态.一般应用程序通常运行于用户态,而当应用程序调用系统调用时候会执行内核代码,此时会处于内核态.一般的,应用程序是不能随便进入内核态 ...

  4. Tiled地图编辑软件

    Tiled官网: http://www.mapeditor.org/ 一个比较简单好用的地图编辑软件.百度可以找到很多教程. 在Egret中,官网提供了Tiled的工具类,但是教程和文档极少...只能 ...

  5. Jwt在Java项目中的简单实际应用

    1.什么是jwt 双方之间传递安全信息的简洁的.URL安全的表述性声明规范.JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对象的形式安全的传递信 ...

  6. vue通信

    组件实例的作用域是孤立的. 一.父子通信 父组件通过props向下传递数据给子组件,子组件通过events给父组件发送消息. 要让子组件使用父组件的数据,我们需要通过子组件的props选项.prop是 ...

  7. python--base64

    import base64import os # base64,参数为文件路径名def file_base64(filepath): if os.path.isfile(filepath): with ...

  8. JS获取时间戳+C#水煎戳转换

    JS获取了当前毫秒的时间戳. var timestamp=new Date().getTime(); //第二种方法: //var timestamp = (new Date()).valueOf() ...

  9. Enables DNS lookups on client IP addresses

    w虚拟域名访问,路由可以到达,但无输出. http://httpd.apache.org/docs/2.2/mod/core.html#hostnamelookups

  10. IBM DEVOPS IN CLOUD--chaos monkey