playbook

Ansible Playbook 初识

旧街凉风 提交于 2020-03-30 00:34:07
Ansible Playbook 基本概述与使用案例 主机规划 添加用户账号 说明: 1、 运维人员使用的登录账号; 2、 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放; 3、 该用户也被 ansible 使用,因为几乎所有的生产环境都是禁止 root 远程登录的(因此该 yun 用户也进行了 sudo 提权)。 1 # 使用一个专门的用户,避免直接使用root用户 2 # 添加用户、指定家目录并指定用户密码 3 # sudo提权 4 # 让其它普通用户可以进入该目录查看信息 5 useradd -u 1050 -d /app yun && echo '123456' | /usr/bin/passwd --stdin yun 6 echo "yun ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 7 chmod 755 /app/ Ansible 配置清单Inventory 之后文章都是如下主机配置清单 1 [yun@ansi-manager ansible_info]$ pwd 2 /app/ansible_info 3 [yun@ansi-manager ansible_info]$ cat hosts_key 4 # 方式1、主机 + 端口 + 密钥 5 [manageservers] 6 172.16.1

ansible在playbook中变量传入到执行脚本的方法

匆匆过客 提交于 2020-03-27 15:31:52
3 月,跳不动了?>>> 简介 这个方式用于ansible调用playbook方法实现远程服务器执行某个脚本,脚本中的某些参数需要由管理服务器传入的情况。 下面的例子是ansible实际调用script模块实现远程服务器执行一个shell脚本 脚本内容 ansible 执行脚本 #!/usr/bin/env python # -*- coding:utf-8 -*- # edit: mesopodamia@gmail.com import ansible from ansible.playbook import PlayBook from ansible.inventory import Inventory from ansible import callbacks from ansible import utils import sys reload(sys) sys.setdefaultencoding('utf-8') vars = "hello world" ansible_command = "/usr/local/bin/ansible-playbook" playbook = "/home/eric/playbook/deploy.yml" hosts = ['192.168.0.99'] # Boilerplace callbacks for stdout

Ansible-playbook

十年热恋 提交于 2020-03-16 09:18:13
Ansible-playbook简介 什么是playbook? 简单点说, playbook就是ansible用于配置,部署和管控节点机器的剧本, 将一系列命令的集合归一使用,类似于shell脚本,不过更加强大. playbook与shell脚本比对 它们功能形似,playbook和shell脚本一样,都是批量处理任务.都是把很多命令组合到一起,加入对应条件判断等,要说区别就是命令结构和被执行场景有所不同; shell脚本由一条条命令构成,一般只在当前的服务器运行; playbook中是有一个个task任务构成,每个task都可以当做shell中的一条命令,playbook不止在一个服务器上执行,因此它需要在其中指定运行该playbook的服务器名.而且playbook有着自己的语法格式 playbook语法格式 playbook由YMAL语言编写,YMAL格式类似于JSON格式,便于写读和理解,它的格式如下: #格式 1.文件的第一行应该以 "---"这三个连续字符开始,代表了YAML文件的开始 2.在一行中, # 后面的内容代表注释,python,ruby,shell都是如此 3.YAML中的列表元素以"-"开头然后紧接着一个空格,后面为元素内容 4.在同一个列表中的元素应该保持相同的缩进,否则会当作错误处理 5.play中hosts ,variables,roles

Ansible-基本概述

岁酱吖の 提交于 2020-03-05 23:32:51
为什么要自动化运维 纯手动软件安装部署方式 我们以 10 台机器部署 Nginx 为例。部署步骤如下: 1、通过 ssh 登录一台机器; 2、yum install -y nginx 或者 获取安装包自行编译安装; 3、配置 Nginx 4、启动 Nginx ,如有必要加入开机自启动; 5、退出登录 上面步骤重复 10 次,即可完成我们的部署要求。 痛点: 1、重复操作频繁,增加了人工成本和后续维护成本; 2、机器太多时,容易落下某些机器且未操作,进而产生后续影响; 3、人工频繁操作时可能有操作步骤不完整的情况,造成该机器和其他机器状态不一致。 自动化运维软件安装部署方式 我们还是以 10 台机器部署 Nginx 为例。部署步骤如下: 1、在控制机或者称为管理机的机器上写好相关脚本。「当然该脚本我们是测试通过的,脚本中包括安装、配置、启动等等」 2、将写好的脚本从控制机推送到受控机; 3、在受控机执行相关脚本,根据脚本部署我们需要的 Nginx。 好处 1、减少了重复操作,提高了工作效率; 2、减小了出错几率,提高了准确率; 3、所有机器状态一致,降低了后续维护成本。 自动化运维使用场景 软件安装部署 配置同步 代码变更 命令执行 任务执行 Ansible 介绍 Ansible是什么 Ansible 是基于Python开发,集合了众多运维工具(puppet、cfengine

Ansible自动化运维学习之四:playbook和roles

隐身守侯 提交于 2020-03-04 22:19:16
备注:文章事例部分代码会出现不对齐的情况,使用时,请注意格式对齐!! 第4 章 playbook和roles 4.1 ansible-playbook常用命令说明 ansible-playbook --help Usage: ansible-playbook playbook.yml Options: -e EXTRA_VARS,--extra-vars=EXTRA_VARS # 设置额外的变量,格式为key/value。-e "key=KEY", # 如果是文件方式传入变量,则-e "@param_file" --flush-cache # 清空收集到的fact信息缓存 --force-handlers # 即使task执行失败,也强制执行handlers --list-tags # 列出所有可获取到的tags --list-tasks # 列出所有将要被执行的tasks -t TAGS,--tags=TAGS # 以tag的方式显式匹配要执行哪些tag中的任务 --skip-tags=SKIP_TAGS # 以tag的方式忽略某些要执行的任务。被此处匹配的tag中的任务都不会执行 --start-at-task=START_AT_TASK # 从此task开始执行playbook --step # one-step-at-a-time:在每一个任务执行前都进行交互式确认 -

ansbile playbook

大城市里の小女人 提交于 2020-03-03 22:03:00
playbook是由一个或多个“play”组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓task无非是调用ansible的一个module。将多个play组织在一个playbook中,即可以让它们联同起来按事先编排的机制同唱一台大戏。下面是一个简单示例。 - hosts: webnodes vars: http_port: 80 max_clients: 256 remote_user: root tasks: - name: ensure apache is at the latest version yum: name=httpd state=latest - name: ensure apache is running service: name=httpd state=started handlers: - name: restart apache service: name=httpd state=restarted 7.1 playbook基础组件 7.1.1 Hosts和Users playbook中的每一个play的目的都是为了让某个或某些主机以某个指定的用户身份执行任务。hosts用于指定要执行指定任务的主机,其可以是一个或多个由冒号分隔主机组;remote

ansible playbook相关

淺唱寂寞╮ 提交于 2020-03-03 21:23:51
playbook(剧本) 格式 playbook的编写应遵循yaml格式的语法 列表 - 字典 k:v 后缀名为 .yaml 或 .yml # 简单示例 - hosts: web # 主机ip/分组名 remote_user: root # 用户身份 tasks: - name: installlxml # 任务名 pip: name=lxml # 使用的模块: 参数 # 注: 执行时使用ansible-playbook xx.yml 传参 # 1. 直接给playbook传参 - hosts: web remote_user: root tasks: - name: installl{{ module_name }} pip: name={{ module_name }} # 2. 在playbook中以vars方式传参 - hosts: web remote_user: root vars: - module_name: requests tasks: - name: installl{{ module_name }} pip: name={{ module_name }} # 注: 执行时使用ansible-playbook -e module_name xx.yml # 3. 在/etc/ansible/hosts 文件中传参 [web] 192.168.80.128

ansible-playbook unarchive模块

孤人 提交于 2020-03-03 21:18:39
先 进行 pause模块的 记录: pause 在playbook执行的过程中暂停一定时间或者提示用户进行某些操作 常用参数: minutes:暂停多少分钟 seconds:暂停多少秒 prompt:打印一串信息提示用户操作 示例: - name: wait on user input pause: prompt="Warning! Detected slight issue. ENTER to continue CTRL-C a to quit" - name: timed wait pause: seconds=30 wait_for 在playbook的执行过程中,等待某些操作完成以后再进行后续操作 常用参数: connect_timeout:在下一个任务执行之前等待连接的超时时间 delay:等待一个端口或者文件或者连接到指定的状态时,默认超时时间为300秒,在这等待的300s的时间里,wait_for模块会一直轮询指定的对象是否到达指定的状态,delay即为多长时间轮询一次状态。 host:wait_for模块等待的主机的地址,默认为127.0.0.1 port:wait_for模块待待的主机的端口 path:文件路径,只有当这个文件存在时,下一任务才开始执行,即等待该文件创建完成 state:等待的状态,即等待的文件或端口或者连接状态达到指定的状态时,下一个任务开始执行

自动化运维工具Ansible

放肆的年华 提交于 2020-02-29 13:42:36
Ansible作用及特点? 协调应用程序生命周期 应用部署 配置管理 工作流程编排 无代理-可预测,可靠,安全 无代理架构 使用OpenSSH通信 无代理维护成本 Ansible架构 USERS:管理员,有两种执行方式,可以通过Ansible执行管理命令批量操作远程主机,也可以通过playbook管理复杂的任务 INVENTORY:保存需要管理主机清单。包括:IP SSH端口 账号密码 API:提供调用接口 MODULES:功能模块,Ansible所有功能都是由模块提供 PLUGINS:插件,Ansible内部核心功能提供 Ansible使用要求 服务端使用要求: Python 2.6/2.7/3.X RedHat,Debian,CentOS等,不支持Windows 被管理端要求: OpenSSH Python 2.6/2.7/3.X Ansible配置文件 : vi /etc/ansible/ansible.cfg [defaults] # some basic default values... #主机清单配置文件 inventory = /etc/ansible/hosts #library = /usr/share/my_modules/ #module_utils = /usr/share/my_module_utils/ #remote_tmp = ~/.ansible

Ansible之roles使用

China☆狼群 提交于 2020-02-26 03:30:00
ansible roles 一. roles作用 主要作用是重用playbook,例如我们无论安装什么软件都会安装时间同步服务,那么每个playbook都要编写ntp task。我们可以将ntp task写好,等到用的时候再调用就行了。ansible中将其组织成role,他有着固定的组织格式。以便playbook调用 二. relos介绍 以特定的层级目录结构进行组织的tasks、variables、handlers、templates、files等;相当于函数的调用把各个功能切割成片段来执行 1. 层级目录结构 role_name/:我们定义的role的名字 file/:用于存放copy或script等模块调用的函数 tasks/:用于定义各种task,此目录一定要有main.yml;其他文件需要main.yml包含调用 handlers:用于定义各种handlers,此目录一定要有main.yml;其他文件需要main.yml包含调用 vars:用于定义variables,此目录一定要有main.yml;其他文件需要main.yml包含调用 templates/:存储由template模块调用的模板文本; meta/:定义当前角色的特殊设定及其依赖关系,此目录中至少应该有一个名为main.yml的文件;其它的文件需要由main.yml进行“包含”调用; default/