参考另外一篇文章

http://blog.51cto.com/weiweidefeng/1895261

when条件 参考http://blog.51cto.com/breezey/1757593

安装目录:

    程序:
ansible
ansible-playbook
ansible-doc
配置文件:
/etc/ansible/ansible.cfg
主机清单:
/etc/ansible/hosts
插件目录:
/usr/share/ansible_plugins/

ansible playbook

   roles/{mysql,nginx,..}/ 目录结构

defaults   默认寻找路径
tasks 此目录中至少应该有一个名为main.yml的文件,用于定义各task;其它的文件需要由main.yml进行“包含”调用;
files 存储由copy或script等模块调用的文件
templates 存储由template模块调用的模板文本;
handlers notify调用部分,此目录中至少应该有一个名为main.yml的文件,用于定义各handler;其它的文件需要由main.yml进行“包含”调用;
vars roles内变量存放路径,此目录中至少应该有一个名为main.yml的文件,用于定义各variable;其它的文件需要由main.yml进行“包含”调用;
meta 此目录中至少应该有一个名为main.yml的文件,定义当前角色的特殊设定及其依赖关系;其它的文件需要由main.yml进行“包含”调用;
ansible.cfg 覆盖/etc/ansible/ansible.cfg的相同配置,如下配置在nginx目录下,作用是:添加一个ansible查找role的路径,这样ansible-playbook运行时可以识别到路径


运行playbook,使用ansible-playbook命令
    () 检测语法
ansible-playbook --syntax-check /path/to/playbook.yaml
() 测试运行
ansible-playbook -C /path/to/playbook.yaml
--list-hosts
-list-tasks
--list-tags
() 运行
ansible-playbook /path/to/playbook.yaml
-t TAGS, --tags=TAGS
--skip-tags=SKIP_TAGS
--start-at-task=START_AT
1.任务:tasks   main.yml  主要执行的操作
---
-name install nginx
yum: name=nginx state=present #yum安装软件
-name start service nginx
service: name=nginx state=restarted #service重启
2.变量:Variables
  第一种、自定义变量
    ---
    - hosts: all
 vars:
        key: aaa
        kkk: bbb
     tasks:
      - name display vars
       debug: msg='{{key}}--->{{kkk}}'  
  第二种 自定义变量 通过文件
#vars.yml
    ---
    - hosts: all
     vars_files:
      - var.file  
     tasks:
      - name display vars
       debug: msg='{{key}}--->{{kkk}}'  
     #var.yml
---
     key: 111
     kkk: 222
第三种 第一个task结果的值传递给第二个task register    
    ---
    - hosts: all
     tasks:
      - name register vars
        shell: hostname
       register: info #shell里的hostname值传给info
      - name display vars
       debug: msg='{{info.stdout}}' #info是个字典,取key为stdout的值
第四种 循环执行任务 with_items
    4.1 一层for循环
    ---
    - hosts: all
     tasks:
      - name debug
       debug: msg='{{item.key}},,,{{item.valu}}'
       with_items:
        - {key: "aa",value: "bb"}
        - {key: "cc",value: "dd"}
    4.2 嵌套循环 for for..
     ...
       debug: msg='{{item[0]}} , {{item[1]}}'
       with_nested:
        - ["a","b"]
        - ["A","B","C"]
3.模板:Templates    nginx.conf.j2 (*.j2结尾)
文本文件,内部嵌套有模板语言脚本(使用Jinja2模板语言编写)
4.角色:roles    main.yml

以特定的层级目录结构进行组织的tasks、variables、handlers、templates、files等目录;
5.执行入口yml
---
- hosts: all
 gather_facts: no
roles:
- nginx #这里填写目录,比如nginx目录 mysql目录等

inventory 静态文件

#host-------------这一行不在如下文件内
---
- hosts all
  remote_user: root #远程ssh主机认证用户
  gather_facts no #执行ansible时,不收集远端主机信息,执行速度会加快
  vars:
    nginx_ports:80
  vars_files:
    - "b.yml" #音乐var文件,当前路径

  ansible -i  (hosts文件或hosts目录)

inventory 动态文件

  动态inventory的意思是所有的变量可以从外部获取,也就是说我们可以从CMDB以及zabbix系统拉取所有的主机信息然后使用ansible进行管理。

cat  inverti.py
#!/usr/bin/env python
# coding=utf-8
import json
host1ip = ['192.168.1.15']
host2ip = ['192.168.1.110']
group = 'test11'
group2 = 'test22'
hostdata = {group:{"hosts":host1ip},group2:{"hosts":host2ip}}
print json.dumps(hostdata,indent=4)

  执行命令

[root@vagrant-centos65 opt]# ansible -i inverti.py all  -a 'uptime' -k
SSH password:
192.168.1.15 | SUCCESS | rc= >>
:: up :, users, load average: 0.00, 0.00, 0.00
192.168.1.110 | SUCCESS | rc= >>
:: up min, users, load average: 0.00, 0.02, 0.00

ansible-playbook快速入门填坑的更多相关文章

  1. Ansible的快速入门

    Ansible 是一个简单的自动化引擎,可完成配置管理,应用部署,服务编排等各种IT需求. Ansible使用python语言开发实现的开源软件,依赖于Jinjia2,paramiko和PyYAML这 ...

  2. iOS端IM开发从入门到填坑

      让App聊起来 IM开发从入门到填坑Demo IM的实现方式 拿来主义,使用第三方IM服务 IM的第三方服务商国内有很多,底层协议基本上都是基于TCP的,类似有网易云信.环信.融云.极光IM.Le ...

  3. Web模糊测试:WFuzz的坑和快速入门

    转载自 FreeBuf.COM 首先说下我对wfuzz这个工具的简单介绍和理解.工具主要是做web模糊测试,最开始做fuzz我是自己写个脚本配合一些常用工具来测,后来看见这款工具因为是比较简单吧,学习 ...

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

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

  5. Android Tips – 填坑手册

    出于: androidChina   http://www.androidchina.net/3595.html 学习 Android 至今,大大小小的坑没少踩,庆幸的是,在强大的搜索引擎与无私奉献的 ...

  6. kolla-ansible快速入门

    kolla-ansible快速入门 kolla-ansible是一个结构相对简单的项目,它通过一个shell脚本,根据用户的参数,选择不同的playbook和不同的参数调用ansible-playbo ...

  7. Java转Ruby【快速入门】

    最近参加实习了,公司的技术栈中需要用到 Ruby 以及 Rails 框架,所以算是开始了踩坑之旅吧.. Ruby 简介 网上的简介要搜都能搜到,具体涉及的包括历史啦之类这里不再赘述,提几个关键词吧: ...

  8. Thymeleaf【快速入门】

    前言:突然发现自己给自己埋了一个大坑,毕设好难..每一个小点拎出来都能当一个小题目(手动摆手..),没办法自己选的含着泪也要把坑填完..先一点一点把需要补充的知识学完吧.. Thymeleaf介绍 稍 ...

  9. jumpservice配置:快速入门

    快速入门 说明 到 Jumpserver 会话管理-终端管理 查看 Coco Guacamole 等应用是否在线 一.系统设置 1.1 基本设置 # 修改 url 的"localhost&q ...

随机推荐

  1. tomcat 9.0.4 性能调优

    参考了网上的一些优化参数,但是在启动中发现 有2个报错: 11-Feb-2018 15:57:23.293 警告 [main] org.apache.catalina.startup.SetAllPr ...

  2. 你真的了解微服务架构吗?听听八年阿里架构师怎样讲述Dubbo和Spring Cloud微服务架构

    微服务架构是互联网很热门的话题,是互联网技术发展的必然结果.它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.虽然微服务架构没有公认的技术标准和规范或者草案,但业 ...

  3. MySQL笔记(三)由txt文件导入数据

    改编自学校实验,涉及一些字符集相关的问题. 索引 建库 导入数据 最终脚本 下载数据 点击这里 建库 create.sql DROP DATABASE IF EXISTS orderdb; CREAT ...

  4. 02: Redis缓存系统

    目录: 1.1 在centos6.5中安装Redis 1.2 Redis的简介及两种基本操作 1.3 Redis对string操作(第一类) 1.4 redis对Hash操作,字典格式(第二类) 1. ...

  5. 20145222何志威《网络对抗》- Web安全基础实践

    20145322何志威<网络对抗>Exp9 Web安全基础实践 基础问题回答 1.SQL注入原理,如何防御 SQL注入 就是通过把SQL命令插入到"Web表单递交"或& ...

  6. python字符串、列表和文件对象总结

    1.字符串是字符序列.字符串文字可以用单引号或者双引号分隔. 2.可以用内置的序列操作来处理字符串和列表:连接(+).重复(*).索引([]),切片([:])和长度(len()).可以用for循环遍历 ...

  7. 关于即来即停app的功能

    Asmallpark软件接口文档说明 编码均采用UTF-8格式传输全部为http,POST请求状态码:200  操作成功    100  服务器异常,稍后再试  404  请求非法  402  数据库 ...

  8. [luogu 2458][SDOI2006]保安站岗

    题目描述 五一来临,某地下超市为了便于疏通和指挥密集的人员和车辆,以免造成超市内的混乱和拥挤,准备临时从外单位调用部分保安来维持交通秩序. 已知整个地下超市的所有通道呈一棵树的形状:某些通道之间可以互 ...

  9. attr返回被选元素的属性值

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. jquery.cookie.js中$.cookie() 使用方法

    定义:让网站服务器把少量数据储存到客户端的硬盘或内存,从客户端的硬盘读取数据的一种技术: 下载与引入:jquery.cookie.js基于jquery:先引入jquery,再引入:jquery.coo ...