当前位置: 首页 > news >正文

北流网站建设百度云资源搜索网站

北流网站建设,百度云资源搜索网站,陕西省建设厅便民服务网站,外包公司做的网站怎么改密码playbooks 概述以及实例操作 Playbooks 组成部分: Inventory Modules Ad Hoc Commands Playbooks Tasks: 任务,即调用模块完成的某些操作 Variables: 变量 Templates: 模板 Handlers: 处理器,由某时间触发执行的操作 Roles: 角色 YAML 介绍…

playbooks 概述以及实例操作

Playbooks 组成部分:

Inventory
Modules
Ad Hoc Commands
Playbooks
Tasks: 任务,即调用模块完成的某些操作
Variables: 变量
Templates: 模板
Handlers: 处理器,由某时间触发执行的操作
Roles: 角色

YAML 介绍

YAML 是一个可读性高的用来表达资料序列的格式。YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822等。Clark Evans在2001年在首次发表了这种语言。

YAML Ain’t Markup Language,即YAML不是XML。

其特性:

可读性好
和脚本语言的交互性好
使用时限语言的数据类型
有一个一直的信息模型
易于实现
可以基于流来处理
表达能力强,扩展型好

YAML 语法

YAML 的语法和其他高阶语言类似,并且可以简单表达清单、散列表、变量等数据结构。其结构(Structure)通过空格来展示,序列(Squence)里的项用-来代办,Map里的键值对用:分割

案例

name: John Smith
age: 41
gender: Male
spouse:name: Jane Smithage: 37gennder: Female
children:-   name: Jimmy Smithage: 17gender: Male-   name: Jenny Smithage: 13gender: Female

YAML 文件扩展名通常为: .yaml,如 example.yaml

List

列表中的所有元素均使用-打头,例如:

# A list of t asty fruits
- Apple
- Orange
- Strawberry
- Mango

Dictionary

字典通过key与value进行表示,例如:

# An exployee record
name: Example Developer
job: Developer
skill: Elite

也可以将key:value 放置于{}中进行描述

# An exployee record
{name: Example Developer, job: Developer, skill: Elite}

Ansible 基础元素

变量

变量名仅能由字母、数字和下划线组成,且只能以字母开头。

facts

facts是由正在通信的远程目标主机发挥的信息,这些信息被保存在ansible变量中,要获取指定额远程主机所支持的所有facts,可以使用如下命令进行:

#ansible hostname -m setup

registre

把任务的输出定义为变量,然后用于其他任务,示例如下:

tasks:
- shell: /usr/bin/fooregister: foo_resultignore_errors: true

通过命令传递变量

在运行playbook的时候也可以通过一些变量供playbook使用,示例如下:

ansible-playbook test.yml --extra-vars "hosts=www user=mageedu"

通过roles传递变量

当一个主机应用角色的时候可以传递变量,然后在角色内使用这些变量,示例如下:

- hosts: webservsroles:- common- { role: foo_app_instance, dir: '/web/htdocs/a.com', port: 8080 }

Inventory

ansible 的主要功能在于批量主机操作,为了便捷地使用其中的部分主机,可以在inventory file中将其分组命名。默认的Inventory file 为 /etc/ansible/hosts。

inventory file 可以有多个,且也可以通过Dynamic Inventory来动态生成

主机变量

可以在inventory中定义主机时为其添加主机变量以便于在playbook中使用。例如:

[webservs]
10.0.0.65 http_port=80 maxRequestsPerChild=888
10.0.0.66 http_port=8080 maxRequestsPerChild=909

组变量

组变量是指赋予给特定组内所有主机上在playbook中可用的变量。例如:

[webservs:vars]
ntp_server=ntp.aliyun.com
nfs_server=nfs.aliyun.com

注意:[组名:vars] 组名中的:vars 是固定用法

组嵌套

inventory中,组还可以包含其他的组,并且也可以像组中的主机指定变量。不过这些变量只能在ansible-playbook中使用,而不支持ansible。例如:

[apache]
http1.magedu.com
http2.magedu.com
[nginx]
nginx1.magedu.com
nginx2.magedu.com
[webservs:children]
apache
nginx
[webservs:vars]
ntp_server=ntp.magedu.com

注意::childer 同样是固定用法

inventory 参数

ansible基于ssh链接inventory中指定的远程主机时,还可以通过参数指定其交互方式;这些擦桉树如下所示:

ansible_ssh_host
ansible_ssh_port
ansible_ssh_user
ansible_ssh_pass
ansible_sudo_pass
ansible_connection
ansible_ssh_private_key_file
ansible_shell_type
ansible_python_interpreter
ansible_*_interpreter

编写 ansible playbooks 剧本

playbook是由一个或多个play组成的列表。play的主要功能在于将事先归并一组的主机装扮成事先通过ansible中的tasks定义好的角色。从根据上来讲,所谓task无非是调用ansible的一个module。将多个play组织在一个playbook中,既可以让他们联通起来按事先编排的机制同唱一台大戏。下面是一个简单的示例:

- hosts: webnodesvars:http_port: 80max_clients: 256remote_user: roottasks:- name: ensure apache is at the lastest versionyum: name=httpd state=latest- name: ensure apache is runningservice: name=httpd state=startedhandlers:- name: restart apacheservice:name=httpd state=restarted

在这里插入图片描述

playbook 基础组件

Hosts 和 Users
playbook 中的每一个play的目的都是为了让某个或某些主机一某个指定的用户执行任务。hosts用于指定要执行指定任务的主机,其可以使一个或多个由冒号分割主机组;remote_user则用于指定远程主机上的执行任务的用户。例如上面示例中的:

- hosts: webnodesremote_user: root

在这里插入图片描述
不过,remote_user也可用于各task中,也可以通过指定其通过sudo的方式在远程主机上执行任务,其可用于play全局或某任务,甚至可以在sudo时sudo_user指定sudo时切换的用户。

- hosts: webnodesremote_user: mageedutasks:- name: test connectionping:remote_user: mageedusudo: yes

在这里插入图片描述

任务列表和action

play的主体部分是task list。task list中的个任务按次序逐个在hosts中指定的所有主机上执行,即在所有主机上完成第一个任务后再开始第二个。在运行playbook 时,如果中途发生错误,所有已执行任务都将会滚,因此,在更正playbook后重新执行一次即可。

task的目的是使用指定的参数执行模块,而在模块参数中可以使用变量。模块执行是幂等的,这意味着多次执行是安全的,因为其结果均一致。

每个task都应该有其name,用于playbook的执行结果输出,建议其内容尽可能清晰地描述任务执行步骤,如果为提供name,则action的结果将用于输出

定义task的可以使用"action: module options" 或 “module: options” 的格式,推荐使用候着以实现向后兼容。如果action一行的内容过度,也使用在行首使用几个空白字符进行换行

tasks:
- name: make sure apache is runningservice: name=htpd state=running

在这里插入图片描述
在众多模块中,只有command 和shell模块仅需要给一个列表而无需使用"key=vale"格式,例如:

tasks:
- name: disable selinuxcommand: /sbin/setenforce 0

在这里插入图片描述
如果命令或脚本的退出码不为零,可以使用如下方式替代:

tasks:
- name: run this command and ignore the resultshell: /usr/bin/somecommand || /bin/trueignore_errors: true

在这里插入图片描述
或者使用ignore_errors来忽略错误信息

tasks:
- name: run this command and ignore the resultshell: /usr/bin/somecommandignore_errors: true

在这里插入图片描述

playbook 案例 1

在所有的webservs组的主机上创建nginx用户和用户组

并模拟拷贝文件到dbservs中

[root@node01 ansible]# cat nginx.yml
- hosts: webservsremote_user: roottasks:- name: create nginx groupgroup: name=nginx system=yes gid=208- name: create nginx useruser: name=nginx system=yes uid=208 group=nginx
- hosts: dbservsremote_user: roottasks:- name: copy file to dbservscopy: src=/etc/inittab dest=/tmp/inittab.ans

在这里插入图片描述
使用ansible-playbook命令执行:

[root@node01 ansible]# ansible-playbook nginx.yml 
PLAY [webservs] ***********************************************************************************************************
TASK [Gathering Facts] ****************************************************************************************************
ok: [10.0.0.65]
TASK [create nginx group] *************************************************************************************************
changed: [10.0.0.65]
TASK [create nginx user] **************************************************************************************************
changed: [10.0.0.65]
PLAY [dbservs] ************************************************************************************************************
TASK [Gathering Facts] ****************************************************************************************************
ok: [10.0.0.66]
TASK [copy file to dbservs] ***********************************************************************************************
ok: [10.0.0.66]
PLAY RECAP ****************************************************************************************************************
10.0.0.65                  : ok=3    changed=2    unreachable=0    failed=0
10.0.0.66                  : ok=2    changed=0    unreachable=0    failed=0  

在这里插入图片描述
验证: webservs的nginx用户和组以及dbservs的/tmp/inittab.ans文件

[root@node01 ansible]# ansible webservs -a 'grep nginx /etc/passwd'
10.0.0.65 | CHANGED | rc=0 >>
nginx:x:208:208::/home/nginx:/bin/bash
[root@node01 ansible]# ansible webservs -a 'grep nginx /etc/group'
10.0.0.65 | CHANGED | rc=0 >>
nginx:x:208:
[root@node01 ansible]# ansible dbservs -a 'ls -l /tmp/inittab.ans'
10.0.0.66 | CHANGED | rc=0 >>
-rw-r--r-- 1 root root 511 Oct 12 10:38 /tmp/inittab.ans

在这里插入图片描述

http://www.mmbaike.com/news/69515.html

相关文章:

  • 网站建设与运营的课程标准站长素材音效网
  • 做网站优化推广百度信息流开户多少钱
  • 网站开发价格 北京网络广告策划书
  • 中原区建设局网站网站运营是做什么的
  • 关键词优化案例中山seo
  • 用HBuilder做网站的模板方象科技服务案例
  • 专业微网站建设公司首选公司哪家好5118网站如何使用免费版
  • 赤峰建网站下载百度语音导航地图安装
  • wordpress会员支付宝seo优化排名技术百度教程
  • 建个公司网站多少钱百度搜索关键词设置
  • 做视频网站要什么软件下载关键词seo公司真实推荐
  • 国外顶级设计网站西安seo服务培训
  • 做网站,就上凡科建站天津关键词排名推广
  • html5 公司网站百度指数数据分析平台官网
  • 电脑主机做网站服务器怎么推广游戏叫别人玩
  • 长沙市天心建设局网站百度关键词排名点击器
  • 外贸网站营销建站百度浏览器下载官方免费
  • 南京明辉建设集团网站seo项目优化案例分析文档
  • 自定义优定软件网站建设怎么能在百度上做推广
  • 一个网页大概多少钱吉林seo网络推广
  • 服装官网网站建设网站名查询网址
  • 重庆市人民政府网首页seo怎么优化网站排名
  • h5制作的网站seo网站推广收费
  • 中国空间站简介100字优化网站seo公司
  • 滁州做网站优化能让手机流畅到爆的软件
  • 重庆网站建设方案比较好的品牌策划公司有哪些
  • 无锡怎么做网站推广优化服务
  • 做网站常用的技术有哪些搜索引擎优化目标
  • 衡水企业做网站搜索关键词热度
  • 怎样自己做电影网站广东深圳疫情最新