itnok.is_ubuntu
is-ubuntu
检测目标 Ubuntu 主机是否是……一个容器或者最终是本地主机。
执行的步骤包括:
- 设置 is_ubuntu_localhost 事实
- 检查是否在容器中
- 设置 is_ubuntu_inside_container 事实
- 检查代理设置是否存在
:exclamation: 需求
无。
:abcd: 角色变量
变量 | 描述 | 默认值 |
---|---|---|
is_force_lookup |
如果自定义额外事实已存在,则不进行查找。此项用于强制查找这些事实 | no |
is_test_url_list |
用于检测互联网连接/可达性的 URL 列表 | [] |
:link: 依赖
无。
: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 (了解更多)