网络自动化运维 Help

9-3 Ansible剧集

概念

  • Playbook: 剧集。一些剧本的集合,从上至下执行剧本。

  • Play: 剧本。任务列表的集合。

  • Task: 任务。调用一个模块,执行一行具体任务和操作。

  • Module: 模块。Ansible把各种功能封装成一个一个.py脚本,产生各种功能,例如执行linux原始命令、拷贝文件、开启服务等。

  • Control node (控制节点): 运行 Ansible 命令行工具的机器(如 ansible-playbook, ansible 等)。可以是笔记本电脑、桌面共享或服务器,也可以在容器(Execution Environments)中运行。

  • Managed nodes (被管节点): 也称为“主机”,是您希望使用 Ansible 管理的目标设备(服务器、网络设备或任何计算机)。通常不在这些节点上安装 Ansible。

  • Inventory (清单): 包含被管节点列表的信息源。可以指定每个节点的信息(如 IP 地址),用于分组和分配变量。

  • Playbooks (剧本): 包含“Play”的文件,是 Ansible 执行的基本单元。用 YAML 编写,易于阅读和理解。

  • Plays (Play): Ansible 执行的主要上下文,将“被管节点”(hosts)映射到“任务”(tasks)。包含变量、角色和有序的任务列表,定义了如何迭代执行。

  • Roles (角色): 可重用的 Ansible 内容(任务、处理器、变量、插件、模板和文件)的有限分发,用于 Play 中。

  • Tasks (任务): 定义要在被管主机上执行的“动作”。可以使用 ad hoc 命令或在剧本中执行。

  • Handlers (处理器): 一种特殊的任务,只有在前面的任务导致状态“changed”时才会被通知并执行。

  • Modules (模块): Ansible 复制到被管节点并执行的代码或二进制文件,用于完成任务中定义的动作。每个模块有特定用途。

  • Plugins (插件): 扩展 Ansible 核心功能的代码片段,可以控制连接方式、数据处理或控制台显示。

  • Collections (集合): 分发 Ansible 内容(剧本、角色、模块、插件)的格式。可以通过 Ansible Galaxy 安装和使用。

通过playbook配置apache web服务

  1. 安装ansible Ubuntu开机后确保连接互联网,桌面右上角点击/点击设置的齿轮图标/networking。

pip install ansible==11.5.0 -i https://mirrors.cloud.tencent.com/pypi/simple
  1. inventory.ini

[myhosts] 127.0.0.1 ansible_user=root ansible_password=111111 ansible_python_interpreter='/usr/bin/python3' ansible_ssh_common_args='-o StrictHostKeyChecking=no'

连通被控节点:

ansible myhosts -m ping -i inventory.ini

得到SUCCESS ping pong返回。

  1. 创建playbook.yaml文件

--- # 文件开始 - name: Install Apache Web Server # 剧集包含一些剧本。这个例子只有一个剧本。 hosts: myhosts # !与inventory.ini中的被控节点组名一致! become: yes # 使用sudo权限。inventory.ini中最好使用root用户信息,普通用户需要提供密码配置。 tasks: # 剧本包含一些任务 - name: Update apt cache # 相当于命令 apt clean、apt update apt: update_cache: yes - name: Install Apache # 相当于命令 apt install httpd apt: name: apache2 state: present - name: Ensure Apache is running # systemctl start httpd、systemctl enable httpd service: name: apache2 state: started enabled: yes - name: Copy index.html to the web server copy: content: "<h1>Welcome to My Web Server!</h1>" # touch /var/www/html/index.html、echo "<h1>Welcome to My Web Server!</h1>" > /var/www/html/index.html、 dest: /var/www/html/index.html owner: www-data # chown www-data:www-data /var/www/html/index.html group: www-data mode: '0644' # chmod 644 /var/www/html/index.html - name: Open port 80 in the firewall # uwf allow 80 ufw: rule: allow name: 'Apache'
  1. 运行playbook
    需要root权限,因为playbook配置文件中的安装软件和启动服务都需要高权限,要么inventory.ini中的ssh用户为root,要么在执行下面命令时加sudo(同时保证playbook文件中配置become:yes)。

ansible-playbook -i inventory.ini playbook.yaml

控制台输出运行过程,如果报错可以看出问题的是哪一步task。运行结束没有报错的话,打开浏览器测试。虚拟机部署web服务后,可以在虚拟机中用自带的火狐浏览器测试http://127.0.0.1:80

9 3 web

🎉
9 3 web

参考

playbook中文指南文档 博客园-ansible的 playbook 使用及举

12 五月 2025