AWX
创建清单和凭据的笔记「 傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波」
关于清单,不多讲,这里的凭据即配置的 SSH 密钥,或者帐密信息,通过 SSH 来运行 Ansible 命令或者剧本,需要有SSH的相关认证信息。凭据就是这些认证信息
创建要管理的清单,并设置 AWX 所需的凭据,以登录并在这些系统上运行 Ansible 剧本或者临时命令,当然,在 AWX 中,更多的是叫作业
清单在 AWX 中以单独的对象进行管理。,组织可能有多个可用的清单。创建作业模板时,可以为它们指定特定清单。 AWX 上的哪些用户可以使用清单对象取决于其在清单中的角色。
清单对象列表
清单对象列表
创建静态清单
创建静态清单
添加主机组
添加主机组
添加主机组
查看主机组列表
查看主机组列表
添加主机
添加主机
编辑主机信息
编辑主机信息
在添加一个
在添加一个
通过清单的访问控制来看一下清单的角色,下面为为该清单添加团队角色
清单角色
清单的可用角色的列表:
首次创建清单时,只能由拥有清单所属组织的 Admin、Inventory Admin 或 Auditor
角色的用户访问。
在 AWX 中管理静态清单时,可以直接在清单对象中定义清单变量。而不是使用 host_vars
和group_vars
目录。
「注意:如果项目有 host_vars 和 group_vars 文件,不能在 AWX 中进行编辑这些文件。如果在两个变量目录文件中,以及在通过 Web UI 管理的静态清单对象中都定义了相同的主机或组变量,并且它们具有不同的值,则很难预测 AWX 将要使用的值。」
在 清单 界面中,通过 编辑 图标来设置变量:
在清单内创建主机组
时,可以在 变量 字段中使用 YAML 或 JSON 来定义组变量
,也可以通过 Edit Group 来修改组变量
:
创建主机组
在清单内创建单个主机
时,可以在 界面中使用 YAML 或 JSON 来定义组变量
,也可以通过 Edit Host 来设置组变量
:
为清单创建计算机凭据,以允许 AWX
使用SSH
在清单主机上运行作业
凭据也是 AWX
对象,用于进行远程系统的身份验证。凭据可以提供密码
和 SSH 密钥
,以成功访问或使用远程资源。
AWX 负责安全的存储这些凭据,凭据和密钥在加密
之后保存到 AWX 数据库,无法从 AWX 用户界面以明文检索
。虽然可以为用户或团队分配使用凭据的特权,但是这些机密不会透露给它们。
当 AWX 需要某一凭据时,它会在内部解密数据
并直接传递给 SSH 或其它程序。
凭据类型
AWX 可以管理许多不同类型的凭据,包括:
Machine
:用于对清单主机的 Playbook 登录和特权升级进行身份验证。Network
:用于 Ansible 网络模块管理网络设备。SCM
:用于项目从远程版本控制系统克隆或更新 Ansible 项目资料。Vault
:用于解密存储在 Ansible Vault 保护中的敏感信息。自定义凭据
:管理员可以定义自定义凭据类型,不建议修改凭据通过位于左侧导航栏上的 AWX 凭据
链接下的页面进行管理。任何用户都可以创建凭据,并被视为该凭据的所有者。
凭据列表
创建凭据
创建凭据
可用通过帐密,SSH密钥,签名的SSH证书
三种方式配置
需要提权,则配置提权信息
配置提权信息
編輯凭据
編輯凭据
如果没有为组织分配凭据
,则它是专用凭据
,只有拥有该凭据的用户
和具有 AWX 系统管理员
才可以使用。
专用凭据
与分配给组织的凭据
的主要区别如下:
专用凭据
,但只有拥有组织的 Admin 角色的 AWX 系统管理员
和用户才能创建组织凭据
。凭据可以共享
。未分配到组织
的专用凭据
仅可由所有者
和 AWX 角色
使用,其它用户和团队不能被授予角色。任何用户都可以创建凭据,并视为该凭据的所有者。
凭据角色
凭据可用的角色:
Admin
:授予用户对凭据的完全权限。Use
:授予用户在作业模板中使用凭据的权限。Read
:授予用户查看凭据详细信息的权限。管理凭据访问权限过程,将添加的凭据添加 teams 授予权限
授予权限
以下是一些常见的使用凭据的场景。
「由 AWX 保护的凭据,不被用户所知」
使用 AWX 凭据的一种常见场景是将任务的执行从管理员委派给一级支持人员。由于凭据由支持人员的团队共享,因此应创建⼀个组织凭据资源,以存储对受管主机进行 SSH会话身份验证所需的用户名、SSH 私钥和 SSH 密钥。该凭据还存储特权升级类型、用户名和 sudo 密码信息。创建后,该凭据可供支持人员用于在受管主机上启动作业,而无需知道 SSH 密钥
或 sudo 密码
。
「凭据提示输入敏感密码,而不是存储在 AWX 中」
另⼀种场景是使用凭据来存储用户名身份验证信息,同时在使用凭据时仍以交互方式提示输入敏感密码。可以配置为在某个作业使用凭据时提示用户输入帐户的密码
,方法是选中 PASSWORD 的 Prompt on launch 复选框
。比如数据库密码等特殊凭证
这里的启动时提示可用于动态的输入密码信息
看一个 Demo,通过上面创建的清单和凭据,执行一个 ad-hoc 作业。
创建一个用户
并且加入到liruilonger 这个团队里
上面给liruilonger 这个teams对应的添加了相关的角色,所以这里通过devops用户来执行执行巡检操作
执行一个临时命令。通过清单ad hoc
的方式
查看下节点中kubelet服务 的状态
选择之前创建的凭据
执行作业:通过输出可以查看 工作节点的 kubelet 状态
可以对输出日志进行查询
刚才的任务状态信息
《DO447 Advanced Automation Ansible Best Practices》