文档章节

ansible学习笔记-playbook常用模块

沙米笔记
 沙米笔记
发布于 2017/12/25 08:36
字数 604
阅读 1K
收藏 0

1、template 模板文件

(1)在模板中调用外部的变量,调用方式{{ xxx }}

(2)模板中可以使用jinja的语法,如循环、条件、宏等

#注意: 在{% %}中使用外部变量,不能加{{}}
{% for ip in ansible_all_ipv4_addresses %}
{{ ip }};
{% endfor %}
# group_names  主机所在组名
{% if 'node_slave' in group_names %}
      slave
{% else %}
      master
{% endif %}


2、set_facs  

运行过程中在受控主机上设置变量或计算变量值

---
- hosts: localhost
  tasks:
  - name: set fact 1
    set_fact: foo="[ 'zero' ]"

  - name: set fact 2
    set_fact: foo="{{ foo }} + [ 'one' ]"

  - name: set fact 3
    set_fact: foo="{{ foo }} + [ 'two', 'three' ]"

  - name: set fact 4
    set_fact: foo="{{ foo }} + [ '{{ item }}' ]"
    with_items:
      - four
      - five
      - six
  - debug: var=foo

输出:
    "foo": [
        "zero",
        "one",
        "two",
        "three",
        "six"
    ]

3、include_role    任务中添加角色

(1)常用方式

---
- hosts: localhost
  vars:
    flag: false
  tasks:
    - name: bbbbbbbb
      shell: echo bbbb

    - name: include test                 #方式1   
      include_role: name=test
    
    - name: include test 2               #方式2  
      include_role:
        name: test
    
    - name: cccccccccc
      shell: echo cccccccc

role中可以继续使用include_role

注意:最好不要这样,如果循环调用中调用前面的role,会出现死循环。

 

(2)陷阱

a、使用when时,不能使用变量值

---
- hosts: localhost
  vars:
    flag: false
  tasks:
    - name: bbbbbbbb
      shell: echo bbbb

    - name: include test
      include_role: name=test
      when: flag			#flag是变量,会报错

    - name: cccccccccc
      shell: echo cccccccc

b、可以使用with_items

---
- hosts: localhost
  vars:
    flag: false
  tasks:
    - name: bbbbbbbb 
      shell: echo bbbb

    - name: include test
      include_role: name=test
      with_items:
        - myname: dxx
 
    - name: cccccccccc
      shell: echo cccccccc

4、pause 暂停模块,用于与用户交互

---
- name: time wait
  pause: seconds=30 
- name: wait on user choose
  pause: prompt="Warning Detected slight issue .ENTER to continue CTRL_C to quit"

5、wait_for

 用于启动某些进程需要一些时间很有用,如tcp端口是否连接

---
- hosts: webapps
  tasks:
    - name: install tomcat6
      yum: name=tomcat6 state=installed
    - name: service start
      service: name=tomcat6 state=start
    - name: wait for tomcat6 to start
      wait_for: port=8080 state=started

6、assemable 将多个文件合并成一个文件

---
#受控主机免密登录dan、linna、wuzhu主机
- hosts: all
  tasks:
    - name: make /opt/sshkeys dirctory
      file: path=/opt/sshkeys state=dirctory owner=root group=root mode=0700
    - name: copy sshkey over
      copy: src=/keys/{{item}}.pub dest=/opt/sshkeys/{{item}}.pub owner=root group=root mode=0600
      with_items:
        - dan
        - linna
        - wuzhu
    - name: make /root/.ssh dirctory
      file: path=/root/.ssh state=dirctory owner=root group=root mode=0700
    - name: build the authorized_keys file
      assemable: src=/opt/sshkeys dest=/root/.ssh/authorized_keys

6、其他模块

(1)add_host

动态添加受管主机到playbook中

(2)get_url、uri

- name: download foo.conf
  get_url: url=http://example.com/path/file.conf dest=/tmp/foo.conf mode=0440

(3)group_by 创建组根据facts

- name: create group like 'kvm-host'
  group_by: key=virt_{{ ansible_virtualization_type}}_{{ ansible_virtualization_role }} 

(4)script

将控制主机的脚本在被管理主机上运行

(5)debug 调试

- name: debug
  debug: msg="{{ansible_distribution}}"  var="aaaa"

 

© 著作权归作者所有

沙米笔记
粉丝 29
博文 43
码字总数 45024
作品 0
深圳
程序员
私信 提问
03-Ansible管理命令_Ansible

一、Ansible 管理命令 Ansible 管理命令有如下几个: (1)ansible:这个命令是日常工作中使用率非常高的命令之一,主要用于临时一次性操作; (2)ansible-doc:Ansible 模块文档说明,针对...

xiaomin0322
2018/09/04
93
0
自动化运维工具 Ansible

学习Ansible的系列文章 Ansible 介绍 Ansible 架构 Ansible 安装 Ansible 配置文件及参数 Ansible 常用模块 Ansible playbook 1. Ansible 介绍 Ansible 是一个配置管理和应用部署工具,只需要...

行者阿难
2018/10/07
0
0
企业级自动化运维工具——ansible

ansible是什么 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。 an...

咏雪
2018/06/28
0
0
ansible学习总结

1 前言 Ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。 ansible是基于模块工作的ansible本身没有...

双月通天
2016/04/01
738
0
Ansible权威指南笔记(粗略)

# 在托管节点上安装 python 解释器 ansible myhost --sudo -m raw -a "yum install -y python2 python-simplejson" # 各个平台上安装 ansible http://www.ansible.com.cn/docs/intro_install......

sktj
2018/01/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何制作省市级别上钻下取的在线疫情地图

目前大多数省级尺度的疫情地图,不能精细的表达各个城市的疫情差异和发展事态。纯粹市级维度的地图由于全国市比较多,很难快速查看自己所在省市的疫情分布情况。我们制作一个省市下钻上取的疫...

空间数据可视化
今天
113
0
用Markdown编程之虚转实

没变成机器码之前,撒都是虚的。而要变成机器码必须有长度。有长度后必然是结构划分。之后就是逻辑正确。而逻辑正确可以看成正确的值。 由此,基础行为有:长度的比对转换、结构的解析、值的...

dwcz
今天
80
0
ASP之ADODB.Stream

ASP 其实很强,真的,很强... 但是,也很难,难就难在没有文档啊~~~ 因为 ASP 经常会用到很多服务器对象,本文记录下在 ASP 中的 Stream(流)操作。 ADODB.Stream 未完待续,敬请期待......

AioDiage
今天
71
0
从源码看世界:Springboot整合Mybatis后到底做了什么

在Mybatis一次数据库操作过程的文章中,我展示了使用Mybatis操作数据库的demo,但实际使用时并不会这里写代码,因为一般都会使用springboot了,那现在我们一起来看看Springboot整合Mybatis之...

壞天空_囝仔
今天
46
0
【自用】 Flutter GestureDetector 给控件添加监听事件

Dart GestureDetector( child: Text("xxxx"), onTap: () => _onXxxxCall(index), ) PS:自用的 不做解释 作者:一个吃货帅锅...

Tensor丨思悟
今天
67
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部