itnok.is_ubuntu

is-ubuntu

构建状态 GitHub 标签 Ansible 角色

检测目标 Ubuntu 主机是否是……一个容器或者最终是本地主机。

执行的步骤包括:

  • 设置 is_ubuntu_localhost 事实
  • 检查是否在容器中
  • 设置 is_ubuntu_inside_container 事实
  • 检查代理设置是否存在

:exclamation: 需求


无。

:abcd: 角色变量


变量 描述 默认值
is_force_lookup 如果自定义额外事实已存在,则不进行查找。此项用于强制查找这些事实 no
is_test_url_list 用于检测互联网连接/可达性的 URL 列表 []

无。

:loudspeaker: 事实


该角色创建以下事实,可供其他角色或剧本使用:

事实 描述
is_ubuntu_behind_proxy 当前 Ansible 角色执行时的版本标签 (如果存在则不会更新此事实,除非 is_force_lookup 设置为 yes)
is_ubuntu_inside_container 当在容器中时为真。发生在 PID 1 既不是 init 也不是 systemd(如果存在则不会更新此事实,除非 is_force_lookup 设置为 yes)
is_ubuntu_localhost 当角色目标机器是 localhost 时为真 (如果存在则不会更新此事实,除非 is_force_lookup 设置为 yes)
is_ubuntu_network_reachable 当所有通过 is_test_url_list 传入的 URL 都可达时为真 (默认包括所有来自 /etc/apt/sources.list 的 URL)
is_ubuntu_url_reachable_list 所有可达 URL 的列表
is_ubuntu_url_unreachable_list 所有不可达 URL 的列表

:notebook: 示例剧本


这是在剧本中使用此角色的示例:

---
- hosts: servers
  remote_user: ubuntu   # 可选(您的远程用户)
  gather_facts: yes     # 可选

  roles:
    - { role: itnok.is_ubuntu }

:microscope: 测试


该角色支持使用 Molecule 进行测试,以验证其在通用环境中的功能。

使用此角色时不需要Molecule,但在本地安装或 CI 中测试时是必要的。 有关在 CI 中使用 Molecule 的示例,可以在该存储库的 GitHub Actions 中找到。 要安装 Molecule,请参阅 Molecule 在线文档 上的说明。如果那里列出的必要依赖项齐全,一切应该像运行以下命令一样简单:

$ python3 -m pip install --user "molecule[ansible,docker,lint]"

测试在为此目的构建的容器内运行 _(尽可能通用)_。因此,Molecule 需要安装 Docker。如果 Podman 是处理容器的首选替代方案,则安装 Molecule 所需的命令应改为:

$ python3 -m pip install --user "molecule[ansible,podman,lint]"

要使用 Podman,Molecule 使用的驱动程序也应在 molecule/default/molecule.yml 文件中更改:第5-6行应更改为:

driver:
  name: podman

所有测试,除了格式、语法检查和幂等性检查外,可以使用以下命令运行:

$ molecule test --parallel

(强烈建议使用可选的 --parallel 选项启动测试套件,因为在多个目标容器上进行测试可以显著缩短测试时间!)

如果需要,可以将附加测试添加到 molecule/default/verify.yml 剧本中。

:guardsman: 许可证


MIT 了解更多

关于项目

Detects whether the target Ubuntu host is... a container or eventually localhost (and more).

安装
ansible-galaxy install itnok.is_ubuntu
许可证
mit
下载
6.8k
拥有者