posts - 80,comments - 0,views - 54498

如果服务器数量很多,配置信息比较多,可利用Ansible Playbook 编写剧本,从而以更加简单得方式实现任务处理得自动化与流程化

  playbook是由一个或多个模块组成,使用不同得模块完成一件事情

  playbook通过yaml语法识别描述的状态文件,扩展名是yaml

PlayBooks组件包括以下内容

  target:定义PlayBook的远程主机

  variable:定义PlayBook使用的变量

  task:定义远程主机上执行的任务列表

  habdler:定义task执行完成后需要调用的任务,例如配置文件被改动,则启动handler任务重启相关联的服务

target常用参数:

  hosts: 远程主机组

  user:执行该任务的用户

  sudo:设置为yes,使用root权限

  sudo_user:指定sudo普通用户

  connection:默认基于SSH连接客户端

  gather_facks:获取远程主机的facts基础信息

variable:常用参数:

  vars:格式、变量名:变量值

  vars_files:指定变量文件

  vars_prompt:用户交互模式自定义变量

  setup:模块取远程主机值

task常用参数:

  name:任务名称(屏幕展示信息)

  action:定义执行的动作

  copy:复制本地文件到远程主机

  template:复制本地文件到远程主机,可以引用本地变量

  service:定义服务状态

1、YAML 三板斧

  • 缩进

    YAML使用一个固定的缩进风格表示层级结构,每个缩进由两个空格组成,不能使用TAB(默认,因为一个tab=4空格) 

    解决方案:

   [root@m01 ~]# vim .vimrc

    set tabstop=2

保存并推出,使用tab就是缩进2个空格

  • 冒号

    以冒号结尾的除外,其他所有冒号后面所有必须有空格

  • 短横线

    表示列表项,使用一个短横杠加一个空格

    多项使用同样的缩进级别的同一列表

2、Playbook的核心元素

  hosts:主机清单

  tasks:任务

  vars:变量

  handlers:特定条件触发的任务

  template:包含了模块语法的文本文件

 ansible playbook 安装apache示例

1
2
[root@m01 ~]# cd /etc/ansible/
[root@m01 ansible]# mkdir ansible_playbook

  为了统一管理所有ansible脚本都放到/etc/ansible/ansible_playbook

[root@m01 etc]# vim /etc/ansible/hosts    #检查客户端配置

1、准备apache的配置文件

1
[root@m01 ansible_playbook]# mkdir -p /etc/ansible/ansible_playbook/conf

  从其他项目中复制http.conf到 /etc/ansible/ansible_playbook/conf  下

修改配置文件 :端口

1
[root@m01 conf]# sed -i 's#Listen 80#Listen 8080#g' httpd.conf

  

编写apache安装启动剧本:

1
2
3
[root@m01 ansible_playbook]# cd /etc/ansible/ansible_playbook
 
[root@m01 ansible_playbook]# vim apache.yaml

 

复制代码
- hosts: web                                          #主机组
  tasks:                                            # 任务
    - name: Install Httpd                                  #运行名称
      yum: name=httpd state=installed
    - name: Configure Http.conf
      copy: src=./conf/httpd.conf dest=/etc/httpd/conf/httpd.conf
      notify: Restart Http Service                            #监控http.conf有无发生改变,如果变化,就触发 Restart Http Service
    - name: Start Http Service
      service: name=httpd state=started enabled=yes
  handlers:                                          #触发任务
    - name: Restart Http Service
      service: name=httpd state=restarted                        #重启
复制代码

  保存并推出:

命令格式:

ansible-playbook [option] filename

ansible-playbook 常用命令:

-C        #模拟运行

--list-hosts      #列出剧本主机清单

--list-tags        #列出剧本标记

--list-tasks      #列出剧本任务

--syntax-check    #检测语法

[root@m01 ansible_playbook]# ansible-playbook --syntax-check apache.yaml     #检查语法

[root@m01 ansible_playbook]# ansible-playbook --list-hosts apache.yaml         #主机清单

[root@m01 ansible_playbook]# ansible-playbook --list-tasks apache.yaml         #任务

[root@m01 ansible_playbook]# ansible-playbook -C apache.yaml           #模拟运行剧本  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@m01 ansible_playbook]# ansible-playbook -C apache.yaml
 
PLAY [web] ************************************************************************************
 
TASK [Gathering Facts] ************************************************************************
ok: [192.168.1.67]
 
TASK [Install Httpd] **************************************************************************
changed: [192.168.1.67]
 
TASK [Start Http Service] *********************************************************************
changed: [192.168.1.67]
 
PLAY RECAP ************************************************************************************
192.168.1.67               : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

[root@m01 ansible_playbook]# ansible-playbook apache.yaml     #运行剧本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@m01 ansible_playbook]# ansible-playbook  apache.yaml
 
PLAY [web] ************************************************************************************
 
TASK [Gathering Facts] ************************************************************************
ok: [192.168.1.67]
 
TASK [Install Httpd] **************************************************************************
changed: [192.168.1.67]
 
TASK [Start Http Service] *********************************************************************
changed: [192.168.1.67]
 
PLAY RECAP ************************************************************************************
192.168.1.67               : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

  

posted on   草根920  阅读(150)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示