Ansible

来自 Alpine Linux
此材料需要扩展...

请随时帮助我们完成它。

Ansible 是一个简单的配置管理、部署、任务执行和多节点编排框架。

它使用 SSH 进行相关系统之间的通信,不需要服务器或客户端守护进程,并且在受管节点上除了 Python 之外不需要额外的软件。

安装

在控制节点(主宿主机)上,您可以安装 ansible-core 软件包和/或 ansible 软件包,这是一个“全功能”软件包,其中包含了 ansible-core 以及一组精选的 集合。两者都可从 community 仓库获得

提示:如果您不知道您是否需要 ansible-core,我建议安装 ansible

# 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

[control] 10.0.0.5 [managed] 10.0.1.5 10.0.1.50

Ping

检查您是否可以访问所有节点

$ ansible all -m ping

Playbooks

在为 Alpine Linux 编写 Playbooks 时,有一些事项需要注意

  1. Init System OpenRC 的支持在 service 模块中。
    - name: Make "lighttpd" start on boot and start now, if not started.
      ansible.builtin.service:
        name: lighttpd
        enabled: true
        state: started
    
  2. 从 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
    
  3. 从 Ansible 2.4 开始,在 awall 模块中支持 Awall 防火墙。
    - name: Enable "foobar" policy
      community.general.awall:
        name: foobar
        state: enabled
        activate: true
    
  4. 如果您要重用来自其他 Linux 发行版的 Playbooks,请记住 Alpine Linux 为二进制文件使用不同的路径。例如 rm/bin/rm

Vault


ansible-lint

您可以通过安装 ansible-lint 软件包并运行来检查您是否使用了“成熟的实践

$ ansible-lint -s ./PATH

参见