Ansible 笔记 (3) - 编写 playbook

playbook 相当于多个命令的编排组合然后一起运行,类似写脚本。在学习 playbook 之前需要了解 yaml 格式。

编写playbook的步骤:

  • 定义主机与用户
  • 编写任务列表
  • 执行 playbook

当然 playbook 支持拆分多个文件,并且可以使用多种维度的封装,例如定义变量、任务、处理程序等,鼓励代码/文件复用。

下面是安装 nginx 和 ntp server 的示例。

1、文件目录结构

[root@localhost ansible_demo]# tree nginx_ntp/
nginx_ntp/
├── group_vars
│   ├── all
│   └── webserver
├── hosts
├── roles
│   ├── common
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   └── main.yml
│   │   ├── templates
│   │   │   └── ntp.conf.j2
│   │   └── vars
│   │       └── main.yml
│   └── web
│       ├── handlers
│       │   └── main.yml
│       ├── tasks
│       │   └── main.yml
│       └── templates
│           └── nginx2.conf
└── site.yml

11 directories, 11 files

2、Inventory 文件

[root@localhost nginx_ntp]# cat hosts
[webserver]
192.168.34.129
192.168.34.130

3、playbook 入口文件

[root@localhost nginx_ntp]# cat site.yml 
---
- name: apply common configuration to all nodes
  hosts: all
  roles:
    - common

- name: configure and deploy the webserver and application code
  hosts: webserver
  roles:
    - web

4、组变量文件

根据 inventory 来区分,all 表示所有,webserver 则指 hosts 中的 webserver section

[root@localhost nginx_ntp]# cd group_vars/
[root@localhost group_vars]# ll
total 8
-rw-r--r--. 1 root root 32 Mar  6 18:12 all
-rw-r--r--. 1 root root 72 Mar  6 18:24 webserver
[root@localhost group_vars]# cat all 
---
ntpserver: ntp.sjtu.edu.cn

[root@localhost group_vars]# cat webserver --- worker_processes: 4 root: /data1 worker_connections: 1024 user: www

5、roles 设置

5.1、角色 common 配置

安装 ntp server,配置文件并同步时间启动 ntp server

  • 任务入口 tasks
[root@localhost nginx_ntp]# cd roles/common/tasks/
[root@localhost tasks]# cat main.yml 
---
- name: install ntp server
  yum: name=ntp state=present

- name: set zone info
  shell: \cp -rf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime - name: update time shell: ntpdate asia.pool.ntp.org - name: configure ntp file template: src=ntp.conf.j2 dest=/etc/ntp.conf notify: - restart ntp - name: start ntp server service: name=ntpd state=started enabled=true - name: test to see if selinux is running command: getenforce register: sestatus changed_when: false
  • name 为 configure ntp file 的任务运行后的 callback handlers
[root@localhost common]# cat handlers/main.yml 
---
- name: restart ntp
  service: name=ntpd state=restarted
  • template 源文件
[root@localhost common]# cat templates/ntp.conf.j2 
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 :: 1

server {{ ntpserver }}
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
  • role common 内置变量
[root@localhost common]# cat vars/main.yml 
---
ntpserver: 210.72.145.44

5.2 角色 web 配置

安装 nginx,配置文件并启动

  • 任务入口 tasks 
[root@localhost web]# cat tasks/main.yml 
---

- name: install nginx
  yum: name=nginx state=latest

- name: add user
  shell: useradd {{ user }}

- name: write config
  template: src=nginx2.conf dest=/etc/nginx/nginx.conf notify: - restart nginx - name: ensure nginx is running shell: /usr/sbin/nginx -c /etc/nginx/nginx.conf
  • name 为 write config 的任务运行后的 callback handlers
[root@localhost web]# cat handlers/main.yml 
---
- name: restart nginx
  service: name=nginx state=restarted
  •  template 文件
[root@localhost web]# cat templates/nginx2.conf 
user  www;
worker_processes  {{ worker_processes }};

events {
    worker_connections  {{ worker_connections }};
}

http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
        root         {{ root }};

        #charset koi8-r;

        #access_log  logs/host.access.log main; location / { root html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }

6 检查语法和运行

[root@localhost nginx_ntp]# ansible-playbook -i hosts site.yml --syntax-check
ERROR! Problem parsing file '/data1/ansible_demo/nginx_ntp/group_vars/all': line 2, column 1

发现 all 文件出错,修改后继续

[root@localhost nginx_ntp]# ansible-playbook -i hosts site.yml --syntax-check

playbook: site.yml
[root@localhost nginx_ntp]# ansible-playbook -i hosts site.yml -f 10

PLAY [apply common configuration to all nodes] **********************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************
ok: [192.168.34.130]
ok: [192.168.34.129] TASK [common : install ntp server] ********************************************************************************************************** ok: [192.168.34.129] ok: [192.168.34.130] TASK [common : set zone info] *************************************************************************************************************** changed: [192.168.34.130] changed: [192.168.34.129] TASK [common : update time] ***************************************************************************************************************** changed: [192.168.34.130] changed: [192.168.34.129] TASK [common : configure ntp file] ********************************************************************************************************** changed: [192.168.34.129] changed: [192.168.34.130] TASK [common : start ntp server] ************************************************************************************************************ changed: [192.168.34.130] changed: [192.168.34.129] TASK [common : test to see if selinux is running] ******************************************************************************************* ok: [192.168.34.130] ok: [192.168.34.129] RUNNING HANDLER [common : restart ntp] ****************************************************************************************************** changed: [192.168.34.129] changed: [192.168.34.130] PLAY [configure and deploy the webserver and application code] ****************************************************************************** TASK [Gathering Facts] ********************************************************************************************************************** ok: [192.168.34.130] ok: [192.168.34.129] TASK [web : install nginx] ****************************************************************************************************************** ok: [192.168.34.130] ok: [192.168.34.129] TASK [web : add user] *********************************************************************************************************************** changed: [192.168.34.129] changed: [192.168.34.130] TASK [web : write config] ******************************************************************************************************************* changed: [192.168.34.129] changed: [192.168.34.130] TASK [web : ensure nginx is running] ******************************************************************************************************** changed: [192.168.34.129] changed: [192.168.34.130] RUNNING HANDLER [web : restart nginx] ******************************************************************************************************* changed: [192.168.34.129] changed: [192.168.34.130] PLAY RECAP ********************************************************************************************************************************** 192.168.34.129 : ok=14 changed=9 unreachable=0 failed=0 192.168.34.130 : ok=14 changed=9 unreachable=0 failed=0 [root@localhost nginx_ntp]# 

 7、被控机验证

[root@localhost yum.repos.d]# ps -ef | grep ntp
ntp       39081      1  0 18:26 ?        00:00:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
root      39384   2517  0 18:27 pts/0    00:00:00 grep ntp
[root@localhost yum.repos.d]# ps -ef | grep nginx
root      39370      1  0 18:26 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
www       39372  39370  0 18:26 ?        00:00:00 nginx: worker process                   
www       39373  39370  0 18:26 ?        00:00:00 nginx: worker process                   
www       39374  39370  0 18:26 ?        00:00:00 nginx: worker process                   
www       39375  39370  0 18:26 ?        00:00:00 nginx: worker process                   
root      39420   2517  0 19:03 pts/0    00:00:00 grep nginx

 

转载于:https://www.cnblogs.com/lxmhhy/p/6506314.html

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
各种安全相关思维导图整理收集。渗透步骤,web安全,CTF,业务安全,人工智能,区块链安全,数据安全,安全开发,无线安全,社会工程学,二进制安全,移动安全,红蓝对抗,运维安全,风控安全,linux安全.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值