Ansible
![]() 请随时帮助我们完成它。 |
Ansible 是一个简单的配置管理、部署、任务执行和多节点编排框架。
它使用 SSH 进行参与系统之间的通信,不需要服务器或客户端守护程序,并且在受管节点上除了 Python 之外不需要额外的软件。
安装
在控制节点(主宿主机)上,您可以安装 ansible-core 软件包和/或 ansible 软件包,这是一个“全功能”软件包,它引入了 ansible-core 以及一组精选的 集合。两者都可从 社区 仓库获得
# apk add ansible
创建 SSH 密钥
为受管节点生成 SSH 密钥。建议使用受密码保护的密钥。
$ ssh-keygen -t ed25519
受管节点
客户端只有最低要求。对于您要管理的每个系统,您需要在管理系统的 authorized_keys
文件中拥有客户端的 SSH 密钥和 Python。
安装 Python 软件包
# apk add python3
传输 SSH 密钥
有两种方法可以做到这一点。从默认的 Alpine 安装中,您可以使用 ssh 和 cat 来完成。
ssh root@[管理系统的 IP] 'cat ~/.ssh/id_ed25519.pub' | cat - >> ~/.ssh/authorized_keys
如果您计划使用 SSH 的其他功能。ssh-copy-id
,由 openssh-client
软件包提供,可以帮助您进行密钥设置。
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@[管理系统的 IP]
用法
配置

清单
清单是受管节点或“主机”的列表。默认位置是 /etc/ansible/hosts
。您可以使用命令行上的 -i PATH
指定不同的清单文件。请参阅 如何构建您的清单 以获取更多信息。
内容:/etc/ansible/hosts
Ping
检查您是否可以访问所有节点
$ ansible all -m ping
Playbook
在为 Alpine Linux 编写 playbook 时,需要记住一些事项
- 在 service 模块中,支持 OpenRC,Init 系统。
- name: Make "lighttpd" start on boot and start now, if not started. ansible.builtin.service: name: lighttpd enabled: true state: started
- 从 Ansible 2.0 开始,在 apk 模块中,支持 APK。
- name: Ensure lighttpd is installed, update cache and install if not. community.general.apk: name: lighttpd state: present update_cache: yes
- 从 Ansible 2.4 开始,在 awall 模块中,支持 Awall 防火墙。
- name: Enable "foobar" policy community.general.awall: name: foobar state: enabled activate: true
- 如果您要重用来自其他 Linux 发行版的 playbook,请记住 Alpine Linux 对二进制文件使用不同的路径。例如
rm
是/bin/rm
。
Vault

ansible-lint
您可以通过安装 ansible-lint 软件包并运行以下命令来检查您是否使用了“经过验证的实践”
$ ansible-lint -s ./PATH