ansible-playbook快速入门填坑
参考另外一篇文章
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快速入门填坑的更多相关文章
- Ansible的快速入门
Ansible 是一个简单的自动化引擎,可完成配置管理,应用部署,服务编排等各种IT需求. Ansible使用python语言开发实现的开源软件,依赖于Jinjia2,paramiko和PyYAML这 ...
- iOS端IM开发从入门到填坑
让App聊起来 IM开发从入门到填坑Demo IM的实现方式 拿来主义,使用第三方IM服务 IM的第三方服务商国内有很多,底层协议基本上都是基于TCP的,类似有网易云信.环信.融云.极光IM.Le ...
- Web模糊测试:WFuzz的坑和快速入门
转载自 FreeBuf.COM 首先说下我对wfuzz这个工具的简单介绍和理解.工具主要是做web模糊测试,最开始做fuzz我是自己写个脚本配合一些常用工具来测,后来看见这款工具因为是比较简单吧,学习 ...
- ansible入门四(Ansible playbook基础组件介绍)
本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...
- Android Tips – 填坑手册
出于: androidChina http://www.androidchina.net/3595.html 学习 Android 至今,大大小小的坑没少踩,庆幸的是,在强大的搜索引擎与无私奉献的 ...
- kolla-ansible快速入门
kolla-ansible快速入门 kolla-ansible是一个结构相对简单的项目,它通过一个shell脚本,根据用户的参数,选择不同的playbook和不同的参数调用ansible-playbo ...
- Java转Ruby【快速入门】
最近参加实习了,公司的技术栈中需要用到 Ruby 以及 Rails 框架,所以算是开始了踩坑之旅吧.. Ruby 简介 网上的简介要搜都能搜到,具体涉及的包括历史啦之类这里不再赘述,提几个关键词吧: ...
- Thymeleaf【快速入门】
前言:突然发现自己给自己埋了一个大坑,毕设好难..每一个小点拎出来都能当一个小题目(手动摆手..),没办法自己选的含着泪也要把坑填完..先一点一点把需要补充的知识学完吧.. Thymeleaf介绍 稍 ...
- jumpservice配置:快速入门
快速入门 说明 到 Jumpserver 会话管理-终端管理 查看 Coco Guacamole 等应用是否在线 一.系统设置 1.1 基本设置 # 修改 url 的"localhost&q ...
随机推荐
- pyDay5
内容来自廖雪峰的官方网站 1.递归函数的优点是定义简单,逻辑清晰. 2.使用递归函数需要注意防止栈溢出. 3.在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会 ...
- kafka生产者和消费者
在使用kafka时,有时候为验证应用程序,需要手动读取消息或者手动生成消息.这个时候可以借助kafka-console-consumer.sh和kafka-console-producer.sh 这两 ...
- Python Web学习笔记之CPU时间片
时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的.如果在时 间片结束时进程还在运行,则CPU将被剥夺并分配给另一个 ...
- Spring IOC 源码分析
Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器.既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文 ...
- Redis的两种持久化方式-快照持久化(RDB)和AOF持久化
Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边,数据保存到硬盘的过程就称为“持久化”效果. redis有两 ...
- 20144303石宇森《网络对抗》MSF基础应用
20144303石宇森<网络对抗>MSF基础应用 实验后回答问题 一.解释什么是exploit,payload,encode: 我认为exploit就是一个简单的攻击指令,就是对配置所有设 ...
- 矩阵二分快速幂优化dp动态规划
矩阵快速幂代码: int n; // 所有矩阵都是 n * n 的矩阵 struct matrix { int a[100][100]; }; matrix matrix_mul(matrix A, ...
- Bi-shoe and Phi-shoe(欧拉函数/素筛)题解
Bi-shoe and Phi-shoe Bamboo Pole-vault is a massively popular sport in Xzhiland. And Master Phi-shoe ...
- 委托的begininvoke
http://blog.csdn.net/cml2030/article/details/2172854 http://blog.163.com/weizhiyong_111/blog/static/ ...
- [echats] - EChats图表的使用
从上图可以看到,信息是能被抽象化为图形展示的,也就是基本的图表,曲线(想想股票那种曲线,普及一下那个叫K线图,想起当初去北京面试炒股公司的时候了...),柱状图等. 而apache开源的echats正 ...