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

山东青岛网站设计网站制定公司

山东青岛网站设计,网站制定公司,wordpress构建自定义设置页面,产品设计工资一般多少ansible中配置并行以及包含和导入 一、引用主机清单 在playbook中引用hosts时,如果对应的主机清单中没有配置该主机,是无法执行的 如果主机清单中配置的是主机名称,那么在playbook中hosts字段后写的是ip或者主机名,那么也是无法执…

ansible中配置并行以及包含和导入

一、引用主机清单

在playbook中引用hosts时,如果对应的主机清单中没有配置该主机,是无法执行的

如果主机清单中配置的是主机名称,那么在playbook中hosts字段后写的是ip或者主机名,那么也是无法执行的

示例如下:
[student@master ansible]$ vim inventory 
[student@master ansible]$ vim a.yml
[student@master ansible]$ ansible-playbook a.yml
[WARNING]: Could not match supplied host pattern, ignoring: 192.168.122.10
[WARNING]: Could not match supplied host pattern, ignoring: node2.example.comPLAY [test] ****************************************************************************
skipping: no hosts matchedPLAY RECAP *****************************************************************************
主机清单:
[student@master ansible]$ cat inventory 
node1
node2
node3
node4
node5[test01]
node1[test02]
node2[web]
node3
node4[test05]
node5[webtest:children]
web
a.yml:
---
- name: testhosts: 192.168.122.10,node2.example.comtasks:- name: debug1debug:msg: 123
执行a.yml这个playbook的时候,就会发现有问题了,直接跳过该任务,无法执行
所以在引用主机清单时,一定要注意playbook里面hosts字段后写的内容一定只能时主机清单里面编辑的内容

二、使用playbook引用主机清单的方式有很多种

Hosts: node1

Hosts: node1.example.com

Hosts: 172.16.30.10

Hosts: all ----所有的受控主机

Hosts: net ----主机组net

Hosts: ‘*’ ----所有的主机

Hosts: ‘*.example.com’

Hosts: ‘172.16.30.*’

Hosts: ’ web* ’ —通过匹配符*来匹配(所有以web开头的组里面的主机)

Hosts: net:webserver ----取net组和webserver组的并集
Hosts: net:&webserver —取交集
Hosts: net:!node1 —net组所有的主机,但是除了node1

Hosts: node[1-5]

Hosts: node[a-d]

三、配置并行(forks)

当ansible处理playbook时,会按顺序运行每个play。确定play的主机列表后,ansible将按顺序运行每个任务。通常,所有主机必须在任何主机在play中启动下一个任务之前完成任务。

理论上,ansible可以连接到play中的所有主机以执行每项任务。这非常适用于小型主机列表。但如果该play以数百台主机为目标,则可能会给控制节点带来沉重的负担。Ansible所进行的最大同时连接数由ansible配置文件的forks参数控制。默认值为5.

比如一个play具有10台受控主机,我们forks的值为5,那么,首先前5台主机,同时运行第一个play,当这5台主机运行完成第一个play后,后5台主机同时运行第一个play,等到10台主机运行完成第一个play时,才开始运行第二个play,以此类推

以三台主机和两个任务为例:
先主机node1、node2、node3先完成任务debug1,再主机node1、node2、node3完成任务debug2
[student@master ansible]$ vim a.yml
[student@master ansible]$ ansible-playbook a.ymlPLAY [test] ****************************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node1]
ok: [node3]
ok: [node2]TASK [debug1] **************************************************************************
ok: [node1] => {"msg": 123
}
ok: [node2] => {"msg": 123
}
ok: [node3] => {"msg": 123
}TASK [debug2] **************************************************************************
ok: [node1] => {"msg": 234
}
ok: [node2] => {"msg": 234
}
ok: [node3] => {"msg": 234
}PLAY RECAP *****************************************************************************
node1                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node2                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node3                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
---
- name: testhosts: node1,node2,node3tasks:- name: debug1debug:msg: 123- name: debug2debug:msg: 234

当受控主机是linux主机时,我们执行play的时候,大多数的任务是在受控主机上运行的,ansible控制节点得负载就少了,这种情况下呢,我们可以把forks的值设置得更高一些。

当受控主机是网络设备时,比如路由器交换机时,大多数得模块是在控制节点中运行的,这时控制节点的负载就会很高,这个时候我们就不能去提高forks的值了。

四、notify handlers用法(当完成….任务时,则进行….任务)

通常情况下,ansible运行play时,它会确保所有的受控主机在启动任何进行下一项任务之前已完成了每个任务。在所有受控主机完成所有任务后,将运行任何通知的处理器

比如说,给所有webserver主机组安装httpd软件包时,安装成功后会重启服务,那么我们使用触发器进行配置

注:已经配置了yum仓库
[student@master ansible]$ vim httpd.yml
[student@master ansible]$ ansible-playbook httpd.yml PLAY [install httpd] *******************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node1]
ok: [node3]
ok: [node2]TASK [install httpd1] ******************************************************************
changed: [node1]
changed: [node3]
changed: [node2]RUNNING HANDLER [restart httpd] ********************************************************
changed: [node3]
changed: [node2]
changed: [node1]PLAY RECAP *****************************************************************************
node1                      : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node2                      : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node3                      : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  
---
- name: install httpdhosts: node1,node2,node3tasks:- name: install httpd1yum:name: httpdstate: presentnotify:- restart httpdhandlers:- name: restart httpdservice:name: httpdstate: restarted

那么如果此时有非常非常多的主机,当我们中间某个安装httpd失败时,那么handlers还会执行吗?我们都知道,handlers它是在我们执行完所有的play之后,才会去执行的,但是node1、node2都更新成功了,node3这里失败了,那么整个play就直接中断了,不会去执行handlers了。那么就有问题了,那我们如何来解决这个问题呢?

就可以用到serial参数,加入给该参数设置为2,那么意思就是先node1、node2这2台主机进行运行play,当我这两台主机全部运行play完成后,再从设置的hosts中,未执行play的主机中选择2台进行执行play,以此类推。

五、serial参数

例1:
[student@master ansible]$ vim httpd.yml
[student@master ansible]$ ansible-playbook httpd.yml PLAY [install httpd] *******************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node2]
ok: [node1]TASK [install httpd1] ******************************************************************
ok: [node2]
ok: [node1]PLAY [install httpd] *******************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node3]TASK [install httpd1] ******************************************************************
ok: [node3]PLAY RECAP *****************************************************************************
node1                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node2                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node3                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
---
- name: install httpdhosts: node1,node2,node3serial: 2tasks:- name: install httpd1yum:name: httpdstate: presentnotify:- restart httpdhandlers:- name: restart httpdservice:name: httpdstate: restarted
例2:
[student@master ansible]$ vim a.yml 
[student@master ansible]$ ansible-playbook a.yml PLAY [test] ****************************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node1]
ok: [node2]TASK [debug1] **************************************************************************
ok: [node1] => {"msg": 123
}
ok: [node2] => {"msg": 123
}TASK [debug2] **************************************************************************
ok: [node1] => {"msg": 234
}
ok: [node2] => {"msg": 234
}PLAY [test] ****************************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node3]TASK [debug1] **************************************************************************
ok: [node3] => {"msg": 123
}TASK [debug2] **************************************************************************
ok: [node3] => {"msg": 234
}PLAY RECAP *****************************************************************************
node1                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node2                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node3                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
---
- name: testhosts: node1,node2,node3serial: 2tasks:- name: debug1debug:msg: 123- name: debug2debug:msg: 234

六、包含与导入

导入:1、导入任务 2、导入playbook
包含:只包含任务
1、导入playbook:(repo.yml导入到httpd.yml中)
repo.yml:
---
- name: repohosts: alltasks:- name: repo1yum_repository:name: aadescription: aa1baseurl: http://ansible.example.com/rhel9/BaseOSenabled: yesgpgcheck: no- name: repo2yum_repository:name: bbdescription: aa2baseurl: http://ansible.example.com/rhel9/AppStreamenabled: yesgpgcheck: no
httpd.yml:
---
- name: import repoimport_playbook: repo.yml
- name: install httpdhosts: node4tasks:- name: install httpd1yum:name: httpdstate: present- name: restart httpdservice:name: httpdstate: restarted
运行httpd.yml剧本
[student@master ansible]$ ansible-playbook httpd.yml PLAY [repo] ****************************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node2]
ok: [node1]
ok: [node3]
ok: [node5]
ok: [node4]TASK [repo1] ***************************************************************************
ok: [node4]
ok: [node1]
ok: [node5]
ok: [node3]
ok: [node2]TASK [repo2] ***************************************************************************
ok: [node2]
ok: [node1]
ok: [node3]
ok: [node5]
ok: [node4]PLAY [install httpd] *******************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node4]TASK [install httpd1] ******************************************************************
changed: [node4]TASK [restart httpd] *******************************************************************
changed: [node4]PLAY RECAP *****************************************************************************
node1                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node2                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node3                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node4                      : ok=6    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node5                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
2、导入任务(将vsftpd.yml导入到httpd.yml中)
vsftpd.yml:
---
- name: install vsftpdyum:name: vsftpdstate: present- name: restarted vsftpdservice:name: vsftpdstate: restarted
httpd.yml:
---
- name: import repoimport_playbook: repo.yml
- name: install httpdhosts: node4tasks:- name: install httpd1yum:name: httpdstate: present- name: restart httpdservice:name: httpdstate: restarted- import_tasks: vsftpd.yml
运行httpd.yml剧本
[student@master ansible]$ ansible-playbook httpd.yml PLAY [repo] ****************************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node5]
ok: [node3]
ok: [node1]
ok: [node2]
ok: [node4]TASK [repo1] ***************************************************************************
ok: [node5]
ok: [node4]
ok: [node3]
ok: [node2]
ok: [node1]TASK [repo2] ***************************************************************************
ok: [node1]
ok: [node5]
ok: [node3]
ok: [node4]
ok: [node2]PLAY [install httpd] *******************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node4]TASK [install httpd1] ******************************************************************
ok: [node4]TASK [restart httpd] *******************************************************************
changed: [node4]TASK [install vsftpd] ******************************************************************
changed: [node4]TASK [restarted vsftpd] ****************************************************************
changed: [node4]PLAY RECAP *****************************************************************************
node1                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node2                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node3                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node4                      : ok=8    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node5                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  
3、包含任务
[student@master ansible]$ ansible-playbook httpd.yml PLAY [repo] ****************************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node4]
ok: [node5]
ok: [node1]
ok: [node2]
ok: [node3]TASK [repo1] ***************************************************************************
ok: [node5]
ok: [node4]
ok: [node2]
ok: [node3]
ok: [node1]TASK [repo2] ***************************************************************************
ok: [node2]
ok: [node1]
ok: [node4]
ok: [node5]
ok: [node3]PLAY [install httpd] *******************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node4]TASK [install httpd1] ******************************************************************
ok: [node4]TASK [restart httpd] *******************************************************************
changed: [node4]TASK [include_tasks] *******************************************************************
included: /home/student/ansible/vsftpd.yml for node4TASK [install vsftpd] ******************************************************************
ok: [node4]TASK [restarted vsftpd] ****************************************************************
changed: [node4]PLAY RECAP *****************************************************************************
node1                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node2                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node3                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node4                      : ok=9    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node5                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 
---
- name: import repoimport_playbook: repo.yml
- name: install httpdhosts: node4tasks:- name: install httpd1yum:name: httpdstate: present- name: restart httpdservice:name: httpdstate: restarted- include_tasks: vsftpd.yml
http://www.dtcms.com/a/483516.html

相关文章:

  • 网站制作理念深圳12个区排名
  • Flutter---底部导航框架
  • 宁波网站开发服务平台的运营推广怎么做
  • 建设局网站漠河网站建设规模设想
  • 购物网站后台好管理吗wordpress网站的优化
  • 【深入浅出PyTorch】--7.1.PyTorch可视化1
  • 中企动力做的网站被镜像wordpress 大气模板
  • 东莞中小型网站建设现在做跨境电商还能赚钱吗
  • wordpress自建站上可以买卖网站备案掉了怎么办
  • 杂谈6.0
  • C语言--预处理
  • 电子商务网站建设核心是河南省城乡建设厅网站首页
  • 个人网站备案名称咋制作网站
  • 做网站需要考虑什么金融网站开发文档
  • 白细胞偏高:揪出原因,科学应对
  • 【开题答辩过程】以《助农电商信息管理系统的设计与实现》为例,不会开题答辩的可以进来看看
  • HT4822立体声耳机放大器:打造高品质音频
  • 使用NVIDIA TAO 6和DeepStream 8构建实时视觉检测管道
  • Java并发机制的底层实现原理:从CPU到JVM的全面解析
  • 判断web代理服务未生效以及测试服务是否生效
  • 视觉检测设备-AI视觉质量检测方案提升效率
  • 原生多模态AI架构:统一训练与跨模态推理的系统实现与性能优化
  • 荣耀手机商城官方网站入口网站制作公司深圳
  • 网站内容运营免费建网站的服务器
  • Spring Boot 集成免费的 EdgeTTS 实现文本转语音
  • Hexo + Butterfly 博客添加 Live2D 看板娘指南
  • 陕西渭南富平建设局网站个人网站 数据库如何上传到空间
  • 亚马逊用什么网站上传做新品好电子工程信息建设网
  • Flutter---默认程序(计数器)
  • 网站建设网站管理网站推广推广