当前位置:首页 > 体育

playbook ansible用法之ansible-playbook简单使用

Ansbile-playbook是一个系统的可翻译命令的集合,用yaml语言编写并运行。ansbile-playbook命令从上到下依次执行。与此同时,playbook还创建了许多功能,允许您将命令的状态转换为以下指令。例如,您可以从一台机器的文件中获取内容并将其作为变量附加,然后在另一台机器中使用它,这使您能够实现一些复杂的部署机制,而ansible命令无法实现这些机制。

playbook由ansible-playbook命令使用,其参数类似ansible命令,如-k(–ask-pass)和-k(–ask-sudo)询问ssh密码和sudo密码,-u指定用户,这些指令也可以通过指定的单元写入playbook。使用ansible-playbook的简单方法:ansible-playbook示例-play.yml。

首先,一个简单的例子

下面是一个简单的可翻译的剧本例子来理解它的组成。

# cat user.yml

-名称:createuser

主机:所有

用户:root

收集事实:错误

vars:

-用户:“测试”

任务:

-名称:createuser

用户:name= "{{ user }} "

上述行动手册实现的功能是添加新用户:

name参数给出了playbook实现的函数的概述,name变量值会在后面的执行过程中打印出来;

hosts参数指定要参与的主机;

用户参数指定哪个用户用于登录远程主机;

collect _ facts参数指定在部分执行以下任务之前是否执行设置模块以获取主机相关信息,当设置模块获取的信息将被以下任务使用时,将使用该参数;

Vars参数指定了一个变量,这里指的是一个用户变量,它的值是test。应该注意的是,变量值必须被引用;

Task指定一个任务,它下面的name参数也是任务的描述,在执行的时候会打印出来。用户调用用户模块,名称是用户模块中的一个参数,添加的用户名调用上述用户变量的值。具体实施结果如下:

[root @ 361 way playbooks]# ansi ble-playbook user . yml

PLAY[create user]* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

任务:[创建用户]* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

已更改:[10.212.52.252]

已更改:[10.212.52.14]

已更改:[10.212.52.16]

播放摘要* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

10.212.52.14 : ok=1已更改=1不可访问=0失败=0

10.212.52.16 : ok=1已更改=1不可访问=0失败=0

10.212.52.252 : ok=1已更改=1不可访问=0失败=0

同样,如果您想删除该新用户,只需用以下行替换剧本文件的最后一行,然后执行相应的剧本:

用户:name = " { { user } } " state = note remove = yes

第二,一键修复bash shellcode示例

然后给出了一个稍微复杂一点的例子,其中bash shellcode的漏洞可以通过ansible-playbook同时为N个主机打补丁。应该注意的是,在现有的网络主机中可能分布着不同的系统版本。这里假设现有网络同时有centos5和6个版本,具体剧本内容如下:

# cat update_bash.yml

-主持人:所有

远程用户:root

收集事实:正确

任务:

-名称:updatebash inredhat 6version

yum:name = http://mirrors.aliyun.com/centos/ 6.6/OS/x86 _ 64/Packages/bash-4 . 1 . 2-29 . el6 . x86 _ 64 . rpm . rpm状态= present

when:ansi ble _ OS _ family = = " RedHat " and able _ distribution _ version | int & gt;= 6

-名称:updatebash inredhat 5version

yum:name = http://mirrors.hustunique.com/centos/ 5/updates/x86 _ 64/RPMS/bash-3.2-33 . el5 . 1 . x86 _ 64 . rpm state = present

when:ansi ble _ OS _ family = = " RedHat " and able _ distribution _ version | int & lt;= 5

上面使用了when语句,同时也启动了collect _ facts设置模块。这里的ansible_os_family变量和ansible_distribution_version变量是由直接使用的设置模块获得的信息。

如果主机数量较多,运行时只需添加-f,选择合适数量的并发主机即可。我在这里使用这个,快速升级bash。

第三,剧本的构成

剧本是由一个或多个“剧本”组成的列表。游戏的主要功能是将预先分组的主持人打扮成任务中预先定义的角色。从根本上说,所谓的任务无非是调用一个ansible的模块。在一个剧本里组织多个剧本,可以让他们按照预先安排好的机制联合起来唱一个大戏。它主要由以下四个部分组成

行动手册的组成:

Target section: 定义将要执行 playbook 的远程主机组Variable section: 定义 playbook 运行时需要使用的变量Task section: 定义将要在远程主机上执行的任务列表Handler section: 定义 task 执行完成以后需要调用的任务

有五个相应的目录层,如下所示:

一般需要的目录层有:(可根据情况更改)

vars 变量层tasks 任务层handlers 触发条件files 文件template 模板

以下描述剧本的四层结构。

1.主机和用户

剧本中每出戏的目的都是让一个或几个主持人以指定用户的身份执行任务。

主机用于指定执行指定任务的主机。它可以是一个或多个用冒号分隔的主机组。

Remote_user用于指定在远程主机上执行任务的用户。

但是,remote_user也可以用于每个任务。您还可以通过指定远程主机为sudo来执行任务,sudo可用于播放全局或任务。

此外,您甚至可以在sudo期间使用sudo_user来指定sudo期间要切换的用户。

示例:

-主机:webnodes

任务:

-名称:测试ping连接:

remote_user: test

苏多:是的

2.任务列表和操作

游戏的主要部分是任务列表。

任务列表中的每个任务在主机中指定的所有主机上依次执行,即第一个任务在第二个任务开始之前在所有主机上完成。如果在从下到上运行一个剧本的过程中出现错误,所有执行的任务都会回滚,所以纠正剧本后再执行就足够了。

任务的目的是执行带有指定参数的模块,模块参数中可以使用变量。模块执行是幂等的,这意味着多次执行是安全的,因为结果是一致的。每个任务都要有名字,用来输出剧本的执行结果。建议其内容尽可能清晰地描述任务执行步骤。如果没有提供名称,操作的结果将用于输出。

定义任务的格式可以使用“动作:模块选项”或“模块:选项”,为了向后兼容,建议使用后者。如果动作行内容太多,也用来在行首换行几个空白字。

任务:

-名称:确保apache正在运行

服务:名称=httpd状态=正在运行

在许多模块中,只有命令和外壳模块只需要给出一个列表而不使用“key=value”格式,例如,

任务:

-名称:禁用selinux

命令:/sbin/setenforce 0如果命令或脚本的退出代码不为零,可以用以下方法替换

任务:

- name:运行此命令并忽略结果

shell:/usr/bin/some command | |/bin/true

或者使用ignore_errors忽略错误消息

任务:

- name:运行此命令并忽略结果

shell: /usr/bin/somecommand

忽略错误:真

3、经手人

用于在相关资源发生变化时采取某些措施。

“notify”的动作可以在每次播放结束时触发,这样可以避免每次修改较多时都执行指定的操作,而不是在所有修改完成后才执行一次指定的操作。

notify中列出的操作称为处理程序,即处理程序中定义的操作在notify中调用。

注意:notify中定义的内容必须与tasks中定义的-name内容相同,才能达到触发效果,否则不会生效。

-名称:模板配置文件

template:src = template . J2 dest =/etc/foo . conf

通知:

-重新启动memcached

-重启apache

处理程序是一个任务列表。这些任务与前述任务没有本质上的不同。

处理程序:

-名称:重新启动memcached

服务:name = memcached state =已重新启动

-名称:重启apache

服务:名称=apache状态=重新启动

4、标签

标签用于让用户选择运行或跳过剧本中的一些代码。Ansible是幂等的,所以会自动跳过不变的部分。即便如此,有些代码要经过非常长的时间才能测试出它们没有改变。

此时,如果您确定它没有改变,您可以通过标记跳过这些代码片段。

5.例子

下面是安装httpd web服务的另一个示例:

# cat/etc/ansi ble/playbook/install _ web . yml

-主机:网络服务器

远程用户:root

聚集_fasks: False

vars:

包:httpd

任务:

-名称:Installhttpd

yum:name = { { packages } } state = present

-名称:Cofiguration httpd

副本:src =/root/httpd . conf dest =/etc/httpd/conf/httpd . conf

标签:httpd_conf

通知:

-重启httpd

-名称:Starthttpd

服务:name = httpd state = started enabled = no

标签:开始

-名称:Addcentos用户

用户:名称={{ item }}状态=缺席

标签:adduser

with_items:

centos

-管理员

处理程序:

-名称:重新启动httpd

服务:名称=httpd状态=重新启动

注意:以上代码没有考虑ubuntu平台,只考虑centos/redhat平台。

1.《playbook ansible用法之ansible-playbook简单使用》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《playbook ansible用法之ansible-playbook简单使用》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/tiyu/1442047.html

上一篇

误将现金当菜品 顾客如数归还

下一篇

丁俊晖战绩 丁俊晖VS光头杀手历史战绩占压倒性优势,对决火箭几成定局

呱呱洗车倒闭 用户退款陷困局

呱呱洗车倒闭 用户退款陷困局  “呱呱洗车”多数地方分公司已处于注销状态。 国家企业信用信息公示系统网站截图  用户充值后无法返还洗车费,公司人去楼空;工商部门称已进行破产流程申请  APP无法使用、门店倒闭、分公司注...

达达开放平台 达达App全新上线 将向C端用户开放运力

人民网北京5月24日电(记者毕磊)一直专注于B端分销服务,昨日宣布正式进入2C市场。新推出的面向商务用户和个人用户的Dada App,致力于打造同城快递的“第一品牌”。与此同时,达达宣布将与京东物流合作,打造中国同城规...

达达app 达达App全新上线 将向C端用户开放运力

人民网北京5月24日电(记者毕磊)一直专注于B端分销服务,昨日宣布正式进入2C市场。新推出的面向商务用户和个人用户的Dada App,致力于打造同城快递的“第一品牌”。与此同时,达达宣布将与京东物流合作,打造中国同城规...

亚马逊无人机专利 能识别用户语音和手势

亚马逊无人机专利 能识别用户语音和手势亚马逊申请快递交付无人机新专利  网易科技讯 3月23日消息,据国外媒体报道,最近亚马逊提交了一份关于快递无人机的专利,当用户给无人机打电话时,它会识别用户手势,然后做出相应的...

小鸣单车一审宣判 70万用户押金无力退还

小鸣单车一审宣判 70万用户押金无力退还

小鸣单车一审宣判 70万用户押金无力退还首例共享单车公益案一审宣判  3月22日上午9:30,广东省消委会起诉小鸣单车一案在广州中院开庭,庭审经历近3小时后,法院当庭宣判。法院判决,小鸣单车需按承诺退还押金,向公众...

最长的名字 史上最长公司名称共39个字 工商局表示不违规

“一口气读这么长的公司名字,真的不容易。”8日,陕西宝鸡一家新注册的公司在网上走红,之所以走红,是因为公司有一个39个字的公司名字——宝鸡有一群有梦想的少年,他们相信在牛叔叔的带领下,用生命创造一个网络科技公司的奇迹。...

快递实名将全覆盖 3方面保障用户信息安全

快递实名将全覆盖3方面保障用户信息安全快递实名制今年将全覆盖  中新社北京3月19日电 19日,中国国家邮政局局长马军胜在十三届全国人大一次会议“部长通道”上表示,今年将实现快递实名制的全覆盖。  马军胜在答问时介...

微信恢复免费提现 官方收款码对所有用户开放吗

微信恢复免费提现 官方收款码对所有用户开放吗?微信终于又恢复免费提现了!步骤还很简单  如今,很多人转账、还钱都习惯转到微信或支付宝账户中,但是这里面的钱提现要收一定比例的手续费。近日网上流传一种说法,说微信可以免...