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服务
安装ansible Ubuntu开机后确保连接互联网,桌面右上角点击/点击设置的齿轮图标/networking。
pip install ansible==11.5.0 -i https://mirrors.cloud.tencent.com/pypi/simple
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返回。
创建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'
运行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。 
🎉
12 五月 2025