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 需 ...
随机推荐
- 2.6 UI控件与后台联系实现
完成的结果如下 : 当点击 左按钮时 最上边的显示栏更改为左 反之则为右 点击开关显示为开或者关 下边两个为显示加载的界面 在输入栏输入数值可以控制进度条的百分比并且显示在最上边 点击图片一二切换图 ...
- Aizu 2155 Magic Slayer 背包DP
这是上上次对抗赛的题目了 其实现在发现整个代码从头到尾,都是用了背包,怪我们背包没深入学好. 比赛的时候,聪哥提出的一种思路是,预处理一下,背包出 ALL攻击 和 single攻击的 血量对应的最小花 ...
- 干货|微软远程桌面服务蠕虫漏洞(CVE-2019-1182)分析
2019年8月,微软发布了一套针对远程桌面服务的修复程序,其中包括两个关键的远程执行代码(RCE)漏洞,CVE-2019-1181和CVE-2019-1182.与之前修复的"BlueKeep ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Java Spring的特点和优点
Spring 是另一个主流的 Java Web 开发框架,该框架是一个轻量级的应用框架,具有很高的凝聚力和吸引力. Spring 是分层的 Java SE/EE full-stack 轻量级开源框架, ...
- 吴裕雄--天生自然Django框架开发笔记:Django Admin 管理工具
Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.可以在项目的 settings.py 中的 INSTALLED_APPS 看到它: ...
- PAT 2018 春
A 1140 Look-and-say Sequence 简单模拟.可能要注意字符串第一个字符和最后一个字符的处理. #include <cstdio> #include <iost ...
- 洛谷 AT2827 LIS
题目传送门 解题思路: 用f[i]表示长度为i的最长上升子序列的最小的末尾. AC代码: #include<iostream> #include<cstdio> #includ ...
- Python Learning Day4
---恢复内容开始--- 遇到的模块 NumPy:多维数组的有效操作. 高效的数学函数. Matplotlib:可视化:2D和(最近)3D图 SciPy:大型库实现各种数值算法,例如: 线性和非线性方 ...
- find: paths must precede expression
郁闷了今天进行如下的查询居然报告错误, [root@localhost /]# find /root/ -name *.txtfind: paths must precede expressionUs ...
- 深入JVM(一)JVM指令手册
本文按照如下思维导图组织 1. 栈和局部变量操作 1.1 将常量压入栈的指令 aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类 ...