Ansible--初始ansible
一、ansible简介
ansible是一种自动化运维工具。实现批量操作系统配置、批量程序部署、批量命令运行等功能。
ansible工作在agentless模式下,并且具有幂等性(幂等性不会重复执行相同指令,例如不会重复安装软件,当你希望一个文件中存在一行内容为 "aaaaaa", 如果不存在就会插入,如果存在就会跳过)。
ansible架构大致如下:

二、基本使用
1、定义Host Inventory /etc/ansible/hosts
[webhosts]
172.16.10.22 ansible_ssh_user=root ansible_ssh_pass=passwd
172.16.10.33 ansible_ssh_user=root ansible_ssh_pass=passwd
## ansible_ssh_user=root 是登陆用户
## ansible_ssh_pass=passwd 是ssh登陆密码
## 使用 ansible-doc MOD 查看模块的用法,例如 ansible-doc copy
2.示例使用
查看时间信息

添加用户,user模块

安装软件和启动服务

支持管道服务

三、YAML语言介绍
YAML是一种可读性高的用来表达资料序列的格式。
YAML Ain't Markup Language即YAML不是XML。
YAML的可读性好
YAML和脚本语言的交互性好
YAML使用实现语言的数据类型
YAML有个一致的信息模型
YAML表达能力强扩展性好
1. YAML 简介
*********************************************YAML语法
YAML语法可以简单表达清单、散列表、标量等数据结构。其结构Structure通过空格展示,序列Sequence的项用“-”来代表
Map里的键值对用“:”分割。下面是一个示例:
name: Jonh Smith
age: 41
gender: Male
YAML 2个重要的结构组成部分list和directory
********************************************list
列表的所有元素均使用“-”开始,例如:
- Apple
- Orange
- Strawberry
- Mango
********************************************dictionary
字典通过key与value标识,例如:
---
name: Example Developer
job: Developer
skill: Elite
也可以将key:value放置于{ }进行表示,例如:
---
{name: Example Developer, job: Developer, skill: Elite}
2.YAML的变量
########################### 变量命名
变量名仅支持字母、数字和下划线并且只能以字母开头
facts 是由正在通信的远程目标主机发回的信息,这些信息保存在ansible变量中。获取facts可使用如下命令:
# ansible webservers -m setup
########################### 自定义变量
使用关键字vars来定义变量
vars:
var_name: value
########################### 变量引用
{{ var_name }}
######################### 变量迭代
当需要重复执行任务时使用迭代机制,使用格式为:将需要迭代的内容定义为item变量引用,并通过with_items语句指明迭代的元素列表。
例如:
- name: add several users
vars:
user1: testuser1
user2: testuser2
user: name={{ user1 }} state=present group=wheel
user: name={{ user2 }} state=present group=wheel
使用迭代方式:
- name: add several users
user: name={{item.name}} state=present groups={{item.groups}}
with_items:
- { name: 'testuser1', groups: 'wheel' }
- { name: 'testuser2', groups: 'root' }
3. Invetory格式
inventory文件遵循INI文件风格(括号中的字符串为组名)。可以将同一个主机同时归并到不同的组中,当目标主机使用非默认的SSH端口,还可以在主机名称之后使用冒号加端口来表明。
[webservers]
www1.webserver.com:2222
www2.webserver.com
############################主机变量
可以在inventory中定义主机时,添加主机变量以便于在playbook中使用,例如
www1.webserver.com http_port=80 maxRequestPerChild=808
############################ 组变量
组变量是赋予制定组内所有主机的playbook可用的变量。例如:
[webservers]
www1.webserver.com
www2.webserver.com
[webservers:vars]
ntp_server=ntp.webserver.com
nfs_server=nfs.webserver.com
############################ 组嵌套
inventory中组可以包含其他的组,并且也可以向组中的主机指定变量。
[apache]
httpd1.magedu.com
httpd2.magedu.com
[nginx]
ngx1.magedu.com
ngx2.magedu.com
[webservers:children]
apache
nginx
############################ inventory参数
ansible_ssh_host # 主机名
ansible_ssh_port # 端口号,默认22
ansible_ssh_user # ssh连接时默认用的用户名
ansible_ssh_pass # ssh连接时的密码
4. playbooks
############################ Hosts和Users
Ansible--初始ansible的更多相关文章
- ansible基础-ansible角色的使用
ansible基础-ansible角色的使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们建议把多个节点都会用到的功能将其定义模块,然后谁要用到该模块就直接调用即可!而在a ...
- ansible配置文件 ansible.cfg的一点说明
ansible配置文件 ansible.cfg的一点说明 > ansible --version ansible 2.1.1.0 config file = /etc/ansible/ansib ...
- 什么是 Ansible - 使用 Ansible 进行配置管理
[注]本文译自:https://www.edureka.co/blog/what-is-ansible/ Ansible 是一个开源的 IT 配置管理.部署和编排工具.它旨在为各种自动化挑战提供巨 ...
- 【Ansible】ansible循环
Ansible 循环 一.简单介绍 在ansible2.5之前,大多数人使”with_XXX”类型的关键字来操作循环,但是从2.6版本开始,官方推荐是”loop”关键字代替” with_XXX”. 1 ...
- 【Ansible】ansible 任务失败控制
任务失败控制 Ansible 通常默认会确保检测模块和命令的返回码并且会快速失败 – 专注于一个错误除非你另作打算. 有时一条命令会返回 0 但那不是报错.有时命令不会总是报告它 ‘改变’ 了远程系统 ...
- 【ANSIBLE】ansible控制windows插件安装及运行error与解决方法
一. 问:因pip版本问题无法安装kerberos 答:安装提示需要先安装pip升级包 下载pip9.0.1升级包: https://pypi.python.org/packages/b6/ac/70 ...
- 【ansible】ansible部署方式以及部署包
最近研究ansible的使用,在使用pip安装的时候遇到很多奇怪的问题,为此采用了手动安装的方式,并编写了一键安装脚本. ansible要求机器必须安装python2.6以上版本,可以通过一下命令查看 ...
- Ansible配置文件ansible.cfg详解
Ansible是一个系列文章,我会尽量以通俗易懂.诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些. Ansible系列博文直达链接:Ansible入门系列 前言 此时外面小雨淅淅沥沥 ...
- Ansible --05 ansible jinja2
ansible jinja2 什么是jinjia2模板 jinjia2是Python的全功能模块引擎 Jinjia2与Ansible的关系 Ansible通常会使用jinjia2模板来修改被管理主机的 ...
- 【Ansible】ansible容器学习环境搭建
想要学习ansible,只有一个节点肯定是不行的,而搭建虚拟机又是一件非常费时费力费资源的事情,所以通过docker 快速搭建一个容器学习环境是一个不错的选择 1. 了解ansible部署 1.1 需 ...
随机推荐
- Python模块进阶、标准库、扩展库
模块进阶 Python有一套很有用的标准库(standard library).标准库会随着Python解释器,一起安装在你的电脑中的. 它是Python的一个组成部分.这些标准库是Python为你准 ...
- HZNU-ACM寒假集训Day8小结 最小生成树
最小生成树(无向图) Kruskal 给所有边按从小到大排序 形成环则不选择(利用并查集) P1546 最短网络 https://www.luogu.com.cn/problem/P1546 #i ...
- php序列化(serialize)和反序列化(unserialize)函数
用法:serialize().unserialize() 适用情境:serialize()返回字符串,此字符串包含了表示value的字节流,可以存储于任何地方.这有利于存储或传递 PHP 的值,同时不 ...
- DefaultHandlerExceptionResolver : Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing
客户端当发送空的json字符串时,请求RestController时,报错: DefaultHandlerExceptionResolver : Failed to read HTTP message ...
- java使用mongoTemplate去重排序查询
import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.c ...
- POJ 1651:Multiplication Puzzle 矩阵相乘式DP
Multiplication Puzzle Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7118 Accepted: ...
- Cassandra--Cassandra 安装
当前最新版本:3.11.3 https://cassandra.apache.org/doc/latest/getting_started/installing.html 前提条件 安装Java8. ...
- OpenCV2基础操作----直线、矩形、圆、椭圆函数的使用
opencv2几个画图函数的调用 要用到几个随机变量: int fr = rand()%frame.rows; int fc = rand()%frame.cols; int b = rand()%2 ...
- Jenkins 插件中心国内镜像源发布
以下文章来源于Jenkins,作者LinuxSuRen Jenkins 社区的网络基础设施都是架设在国外的服务器上,而且,并没有在国内有 CDN 或者负载均衡的配置.对所有的 Jenkins 用户而言 ...
- 干货 | 利用京东云Web应用防火墙实现Web入侵防护
摘要 本指南描述如何利用京东云Web应用防火墙(简称WAF),对一个简单的网站(无论运行在京东云.其它公有云或者IDC)进行Web完全防护的全过程.该指南包括如下内容: 准备环境 在京东云上准备Web ...