关键词:
一、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-doc:查看ansible模块文档ansible-galaxy:下载一些东东给ansible用一般现成的程序在galaxy.ansible.com网站ansible-playbook:核心,常用于批量部署机器服务和初始化(需要利用yaml语法写一... 查看详情
conda 没有使用 ansible playbook 进行初始化
】conda没有使用ansibleplaybook进行初始化【英文标题】:condanotgettinginitializeusingansibleplaybook【发布时间】:2019-10-1117:42:36【问题描述】:我正在使用ansible自动安装conda,但激活conda的最后一步(condainit)失败了。我试图运行condainit... 查看详情
[ansible实战]-批量配置初始化主机环境(代码片段)
...sh连接速度#09.优化命令行显示第二章目录规划[root@m01:/etc/ansible]#tree.├──hosts├──nfs│??├──files│??├──handlers│??├──tasks│? 查看详情
ansible学习记录三:配置文件
0.配置文件 两个核心文件:ansible.cfg和hosts文件,默认都存放在/etc/ansible目录下。 ansible.cfg:主要设置一些ansible初始化的信息,比如日志存放路径、模块、插件等配置信息 hosts:机器清单,进行分组管理&nb... 查看详情
[ansible实战]-批量配置初始化主机环境(代码片段)
...sh连接速度#09.优化命令行显示第二章目录规划[root@m01:/etc/ansible]#tree.├──hosts├──nfs│??├──files│??├──handlers│??├──tasks│??├──templates│??└──vars├──roles│??├──init│??│??├──files│??│??│??├──clos... 查看详情
在ansible中如何从另一个变量初始化变量?(代码片段)
在Ansible角色中,如何根据另一个变量定义变量?我正在设计一个角色,并希望它的界面能够理解像framework_enable_java=yes或framework_enable_java=mysqltomcat这样的剧本变量,并希望编写一个定义布尔值的vars/main.yml文件framework_enable_java_coref... 查看详情
ansible——ansible的脚本和playbook剧本
playbooks概述Playbook介绍playbook是ansible用于配置,部署,和管理被控节点的剧本。通过playbook的详细描述,执行其中的tasks,可以让远端主机达到预期的状态。playbook是由一个或多个”play”组成的列表。当对一台机器做环境初始化的... 查看详情
ansible简单使用示例
一ansible介绍在自动化工具中,最简单、易于上手,而且最流行的当属Ansible莫属了。Ansible是一个开源配置管理工具,可以使用它来自动化任务,部署应用程序实现IT基础架构。Ansible可以用来自动化日常任务,... 查看详情
ansible简单使用示例
一ansible介绍在自动化工具中,最简单、易于上手,而且最流行的当属Ansible莫属了。Ansible是一个开源配置管理工具,可以使用它来自动化任务,部署应用程序实现IT基础架构。Ansible可以用来自动化日常任务,... 查看详情
ansible实践4-管理配置文件
...来写个管理nginx配置文件的playbook mkdir -p/etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks}其中new为更新时用到的,old为回滚时用到的,files下面为nginx.c 查看详情
ansible入门讲解(代码片段)
目录一、Ansible简介Ansible是什么Ansible特点Ansible架构图二、Ansible任务执行Ansible任务执行模式Ansible执行流程Ansible命令执行过程三、Ansible配置详解Ansible安装方式pip安装yum安装ansible程序结构ansible配置文件查找顺序ansible配置文件ansib... 查看详情
ansible源码解读
Ansible源码获取AnsibleGithub:https://github.com/ansible Ansible目录结构$tree-L2ansible-2.0.0.0ansible-2.0.0.0|--bin#可执行程序存放目录||--ansible||--ansible-doc->ansible||--ansible-galaxy->ansible||--ansibl 查看详情
ansible使用
参考技术AAnsible使用/etc/ansible/ansible.cfg主配置文件ansible的配置文件/etc/ansible/hostsInventory要远程控制的主机列表/usr/bin/ansible-doc帮助文件/usr/bin/ansible-playbook指定运行任务文件默认:/etc/ansible/hostsinventoryfile可以有多个,且也可以通... 查看详情
linux系统之ansible的基本介绍
Linux系统之Ansible的基本介绍一、Ansible的介绍1.Ansible简介2.Ansible的特点3.Ansible的原理二、Ansible的架构1.Ansible的架构图2.Ansible的核心组件三、Ansible的工作机制四、Ansible的快速部署1.配置yum仓库2.安装ansible及相关软件包3.查看ansible版... 查看详情
ansible常用模块实例(代码片段)
ansible主要文件(/etc/ansible/ansible.cfg)#ansible主配置文件。(/etc/ansible/hosts)#主机清单,保存管理的主机信息。(/etc/ansible/roles)#公共角色,主要在自动化部署多台主机时应用。 ansible命令集ansible定义并运行简单任务。ansible-... 查看详情
ansible之路——第五章:ansible的几个命令(代码片段)
安装完ansible后,发现ansible一共为我们提供了七个指令:ansible、ansible-doc、ansible-galaxy、ansible-console、ansible-playbook、ansible-pull、ansible-vault。下面简单介绍一下这几个命令的用法。相应命令的详细用法可以通过man来查询。 5.1ans... 查看详情
ansible学习:ansible基础
一.Ansible简介ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批... 查看详情
自动化运维工具——ansible详解案例分享(代码片段)
自动化运维工具——ansible详解案例分享(一)目录ansible简介ansible是什么?ansible特点ansible架构图ansible任务执行ansible任务执行模式ansible执行流程ansible命令执行过程ansible配置详解ansible安装方式使用pip(python的包管理模块)安装... 查看详情