一、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的更多相关文章

  1. ansible基础-ansible角色的使用

    ansible基础-ansible角色的使用 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们建议把多个节点都会用到的功能将其定义模块,然后谁要用到该模块就直接调用即可!而在a ...

  2. ansible配置文件 ansible.cfg的一点说明

    ansible配置文件 ansible.cfg的一点说明 > ansible --version ansible 2.1.1.0 config file = /etc/ansible/ansib ...

  3. 什么是 Ansible - 使用 Ansible 进行配置管理

    [注]本文译自:https://www.edureka.co/blog/what-is-ansible/   Ansible 是一个开源的 IT 配置管理.部署和编排工具.它旨在为各种自动化挑战提供巨 ...

  4. 【Ansible】ansible循环

    Ansible 循环 一.简单介绍 在ansible2.5之前,大多数人使”with_XXX”类型的关键字来操作循环,但是从2.6版本开始,官方推荐是”loop”关键字代替” with_XXX”. 1 ...

  5. 【Ansible】ansible 任务失败控制

    任务失败控制 Ansible 通常默认会确保检测模块和命令的返回码并且会快速失败 – 专注于一个错误除非你另作打算. 有时一条命令会返回 0 但那不是报错.有时命令不会总是报告它 ‘改变’ 了远程系统 ...

  6. 【ANSIBLE】ansible控制windows插件安装及运行error与解决方法

    一. 问:因pip版本问题无法安装kerberos 答:安装提示需要先安装pip升级包 下载pip9.0.1升级包: https://pypi.python.org/packages/b6/ac/70 ...

  7. 【ansible】ansible部署方式以及部署包

    最近研究ansible的使用,在使用pip安装的时候遇到很多奇怪的问题,为此采用了手动安装的方式,并编写了一键安装脚本. ansible要求机器必须安装python2.6以上版本,可以通过一下命令查看 ...

  8. Ansible配置文件ansible.cfg详解

    Ansible是一个系列文章,我会尽量以通俗易懂.诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些. Ansible系列博文直达链接:Ansible入门系列 前言 此时外面小雨淅淅沥沥 ...

  9. Ansible --05 ansible jinja2

    ansible jinja2 什么是jinjia2模板 jinjia2是Python的全功能模块引擎 Jinjia2与Ansible的关系 Ansible通常会使用jinjia2模板来修改被管理主机的 ...

  10. 【Ansible】ansible容器学习环境搭建

    想要学习ansible,只有一个节点肯定是不行的,而搭建虚拟机又是一件非常费时费力费资源的事情,所以通过docker 快速搭建一个容器学习环境是一个不错的选择 1. 了解ansible部署 1.1 需 ...

随机推荐

  1. 驰骋BPM系统-表单引擎-流程引擎 2020年大换装

      关键字:驰骋表单引擎,流程引擎,界面升级. 前言概述: 感谢美工与同事们的辛苦工作,ccbpm新年大换装,迎接爱好着,为这阴霾多日的疫情气愤增添一笔光彩. 本次的色系以浅灰色为主,因为ccbpm大 ...

  2. 数据库之存储过程Procedure

    数据库之存储过程 一.概述 SQLserver中视图通过简单的select查询来解决复杂的查询,但是视图不能提供业务逻辑功能,而存储过程可以办到. 二.什么是存储过程 存储过程procedure是一组 ...

  3. 201909-2 小明种苹果(续) Java

    思路: 待补充 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc ...

  4. Android自定义View——彩色圆环统计图

      1.初始化变量 圆的粗细:圆环的大小. 标注:文字前面的圆点. 分配比例大小:由于需要计算圆环扫过的角度,计算方法使用:(比例/100)*360度,用百分比算出360度占用了多少,由于比例/100 ...

  5. part12 非核心代码异步加载

    router文件中的 index component: ()=> import(‘path’) // 这样 访问一个页面 就只请求这个页面的js逻辑 //当app很小的的时候不需要做异步拆分 / ...

  6. VUE v-if与v-show

    v-if 本质:vue-if是动态的向DOM树内添加或者删除DOM元素 优点:更加灵活 <li v-for="(item, index) in scene" v-if=&qu ...

  7. 冒泡排序_python

    def popdata(ls): for i in range(len(ls)): for j in range(i+1,len(ls)): if ls[i]>ls[j]: # tmp=ls[i ...

  8. OpenCV2基础操作----直线、矩形、圆、椭圆函数的使用

    opencv2几个画图函数的调用 要用到几个随机变量: int fr = rand()%frame.rows; int fc = rand()%frame.cols; int b = rand()%2 ...

  9. 字符串编码研究:Unicode

    Unicode Unicode 编码系统可分为编码方式和实现方式两个层次. 1.编码方式 Unicode字符平面映射定义了所有的Unicode字符集. 2.实现方式(UTF8,UTF16) UTF-8 ...

  10. WebSocket的简单实现&jsp

    创建一个web项目 导入依赖: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=& ...