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 需 ...
随机推荐
- C语言:大数求和
点击获取题目 1410: [蓝桥杯]高精度加法 时间限制: 1 Sec 内存限制: 256 MB提交: 28 解决: 20[状态] [提交] [命题人:外部导入] 题目描述 输入两个整数a和b,输 ...
- django数据库读写分离
django数据库读写分离 1. 配置数据库 settings.py文件中 用SQLite: DATABASES = { 'default': { 'ENGINE': 'django.db.backe ...
- 2020/2/1 PHP代码审计之变量覆盖漏洞
0x00 变量覆盖简介 变量覆盖是指变量未被初始化,我们自定义的参数值可以替换程序原有的变量值. 0x01 漏洞危害 通常结合程序的其他漏洞实现完整的攻击,比如文件上传页面,覆盖掉原来白名单的列表,导 ...
- Sequence Models Week 1 Improvise a Jazz Solo with an LSTM Network
Improvise a Jazz Solo with an LSTM Network Welcome to your final programming assignment of this week ...
- HDU 5312:Sequence
Sequence Accepts: 25 Submissions: 1442 Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 2621 ...
- C++交换两个变量值的方法
简单地列一下交换两个变量值地几种方法. 1.通过第三方实现,这一种也是最最最常见普通的方法: void swap(int *a, int *b) { int tmp = *a; *a = *b; *b ...
- Nacos快速开始
Nacos是一个服务发现.配置管理和服务管理的组件. 说到服务注册与发现,我想到Eureka.Zookeeper 说到服务治理,我想到Dubbo 说到配置管理,我想到Apollo 作为后起之秀的Nac ...
- 吴裕雄--天生自然TensorFlow2教程:Broadcasting
Broadcasting可以理解成把维度分成大维度和小维度,小维度较为具体,大维度更加抽象.也就是小维度针对某个示例,然后让这个示例通用语大维度. import tensorflow as tf x ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 导出数据
MySQL中可以使用SELECT...INTO OUTFILE语句来简单的导出数据到文本文件上. 使用 SELECT ... INTO OUTFILE 语句导出数据 以下实例中将数据表 runoob_ ...
- MySQL性能管理及架构设计:第2章 什么影响了MySQL性能
第2章 什么影响了MySQL性能 2-1 影响性能的几个方面 1.服务器的硬件 2.服务器的操作系统 3.数据库的存储引擎 4.数据库的参数配置 5.数据库表结构设计和SQL语句的编写和优化 2-2 ...