Automation controller has a full-featured command line interface. Refer to AWX Command Line Interface documentation for configuration and usage instructions.
在安装过程中,会提示您输入一个管理员密码,该密码是在控制器中创建的 admin
超级用户/第一用户的密码。如果您通过 SSH 登录实例,它会在提示符后为您提供默认的管理员密码。如果您需要更改这个密码,请在控制器服务器中以 root 用户身份运行以下命令:
awx-manage changepassword admin
下一步,输入新密码。之后,您输入的新密码将作为 Web UI 中的管理员密码。
要在创建策略时使用 Django 验证密码,请参阅 Django 密码策略。
在一些情况下,您可能需要从命令行创建管理员(超级用户)帐户。要创建一个管理员,请以 root 用户身份在控制器服务器上运行以下命令,并在提示时输入管理员信息:
awx-manage createsuperuser
控制器提供的凭证不会通过 ProxyCommand 流向跳过主机。设置通道连接后,这些凭证仅用于终端节点。
这需要在 ProxyCommand 定义中的 AWX 用户的 SSH 配置中配置固定的用户/密钥文件,该配置通过跳过主机设置连接。例如:
Host tampa
Hostname 10.100.100.11
IdentityFile [privatekeyfile]
Host 10.100..
Proxycommand ssh -W [jumphostuser]@%h:%p tampa
您还可以通过清单变量在控制器实例中添加一个跳过主机。这些变量可以在清单、组或主机级别上设置。要添加它,请导航到清单并在您选择的级别 variables
字段中添加以下变量:
ansible_user: <user_name>
ansible_connection: ssh
ansible_ssh_common_args: '-o ProxyCommand="ssh -W %h:%p -q <user_name>@<jump_server_name>"'
使用 automation controller 时,可以通过 API 获取命令的 Ansible 输出(JSON 格式)。
要查看 Ansible 输出,请浏览:
https://<controller server name>/api/v2/jobs/<job_id>/job_events/
虽然 Ansible 不需要配置文件,但操作系统软件包通常会在 /etc/ansible/ansible.cfg
中包括默认文件来进行定制。为了使用自定义 ansible.cfg
文件,请将其放在项目根目录。Automation controller 从项目根目录运行 ansible-playbook
,然后在其中找到自定义 ansible.cfg
文件。在项目的其他位置中的 ansible.cfg
都会被忽略。
要了解在这个文件中可以使用的值,请参阅 configuration file on github。
您可以使用默认选项做为一个开始,并根据需要配置默认模块路径或者连接类型,以及其它功能。
控制器会覆盖一些 ansible.cfg 选项。例如,控制器存储 SSH ControlMaster 套接字、SSH 代理套接字,以及每个作业临时目录中的其他每个作业运行项目,后者将传递给用于作业执行的容器。
Ansible 默认收集其管理下的机器的“事实 (fact)”,可在 Playbook 和模板中访问。要查看有关机器的所有可用事实 (fact) ,可以临时运行 setup
模块:
ansible -m setup hostname
这将显示特定主机可用的所有事实 (fact) 的字典。如需更多信息,请参阅:https://docs.ansible.com/ansible/playbooks_variables.html#information-discovered-from-systems-facts
设置 ALLOW_JINJA_IN_EXTRA_VARS = template
仅适用于保存的作业模板额外变量。提示的变量和问卷调查变量可从"template"中排除。此参数有三个值:template
允许使用直接保存在作业模板定义中的 Jinja(默认);never
禁用所有 Jinja 的使用(推荐使用);always
始终允许 Jinja(不建议使用它,但在需要满足之前的兼容性时可能是一个选项)。
此参数可在控制器 UI 的 Jobs Settings 屏幕中配置:
请参阅 Automation Controller User Guide 中的 Execution Environments。
controllerhost
主机名¶在 System Settings 中,您可以使用自己的主机名替换 Base URL of The Controller Host 项中的 https://controller.example.com
以更改通知主机名。
刷新您的控制器许可证也会更改通知主机名。automation controller 的新安装不必设置通知主机名。
使用控制器 API 启动作业很简单。以下是使用 curl
工具的简单示例。
假设作业模板 ID 为"1",控制器 IP 为 192.168.42.100,且 admin
和 awxsecret
是有效的登录凭证,您可以以这种方式创建新作业:
curl -f -k -H 'Content-Type: application/json' -XPOST \
--user admin:awxsecret \
http://192.168.42.100/api/v2/job_templates/1/launch/
这会返回一个 JSON 对象,您可以解析并用来提取“id”字段,这是新创建的作业的 ID。
您还可以将额外变量传递给作业模板调用,如以下示例所示:
curl -f -k -H 'Content-Type: application/json' -XPOST \
-d '{"extra_vars": "{\"foo\": \"bar\"}"}' \
--user admin:awxsecret http://192.168.42.100/api/v2/job_templates/1/launch/
您可以登录到 http://192.168.42.100/api/ 并浏览各种可用对象来查看在线 API 文档。
注解
extra_vars
参数需要是一个字符串,它包含 JSON,而不单纯是 JSON 字典,因此在对引号进行转义时,请小心谨慎。
默认情况下,控制器只显示 VPC 中具有与它们关联的弹性 IP (EIP) 地址的实例。要查看您的 VPC 实例,请执行以下步骤:
在控制器界面中,选择您的清单。
点击来源设置为 AWS 的组,并点击 Source 选项卡。
在“来源变量”框中输入:vpc_destination_variable: private_ip_address
保存并触发组更新。现在,您应该可以看到所有 VPC 实例。
注解
为了有效地配置这些实例,必须在 VPC 中运行控制器,并可访问这些实例。
By default, the dynamic inventory sources in the controller (AWS, Google, etc) return all instances available to the cloud credentials being used. They are automatically joined into groups based on various attributes. For example, AWS instances are grouped by region, by tag name and value, by security groups, etc. To target specific instances in your environment, write your playbooks so that they target the generated group names. For example:
---
- hosts: tag_Name_webserver
tasks:
...
您也可以使用作业模板设置中的 Limit
字段将 playbook 运行限制为一个特定的组、多个组、主机或它们的组合。语法与 ansible-playbook 命令行上的 --limit parameter
相同。
您也可以通过将自动生成的组复制到自定义组中,创建自己的组。请确保在动态清单源上禁用 Overwrite
选项,否则后续同步操作将删除并替换您的自定义组。
如果在最新的 Ansible 核心分支中有一个您想要在控制器系统中使用的功能,可以按照以下方法在控制器中使用它。
首先,确定您要从可用的 Ansible 核心模块或 Ansible 额外模块 GitHub 库中使用的更新模块。
接下来,在名为 /library
的 Ansible 源 playbook 的同一目录级别创建新目录。
创建了这个模块后,复制您想要使用的模块,并将其拖放到 /library
目录——它就会首先通过系统模块机制被使用。当您可以通过普通的软件包管理器把这个功能更新到稳定版本后,就可以删除它。
Ansible 在 playbook 运行时具有处理操作的灵活方法,称为回调插件。您可以使用控制器的这些插件进行处理,例如在 playbook 运行或失败时通知服务、在每次 playbook 运行后发送电子邮件等。如需回调插件架构的官方文档,请参阅:http://docs.ansible.com/developing_plugins.html#callbacks
注解
automation controller 不支持 stdout
回调插件,因为 Ansible 仅允许一个插件,且 automation controller 已将该插件用于流传输事件数据。
您还可以查看一些示例插件,这些插件应该根据具体站点目的进行修改,比如以下网址的示例:https://github.com/ansible/ansible/tree/devel/lib/ansible/plugins/callback
要使用这些插件,请将回调插件 .py
文件和 playbook 放到控制器项目中的名为 /callback_plugins
的目录中。然后,在作业设置屏幕结尾部分的 Ansible Callback Plugins 字段中指定它们的路径(每行一个路径):
注解
要使由 Ansible 提供的大部分回调可以在全局范围内应用,您必须将其添加到您的 ansible.cfg
的 callback_whitelist
部分。如果您有自定义回调,请参阅 Ansible 文档`Enabling callback plugins <https://docs.ansible.com/ansible/latest/plugins/callback.html#enabling-callback-plugins>`_。
默认情况下,控制器会尝试 ssh
到主机。您需要将 winrm
连接信息添加 Windows 主机所属的组变量。您可以编辑主机所在的 Windows 组,并将变量放在组的源/编辑界面中。
添加 winrm
连接信息:
点击包含 Windows 服务器的组名称右边的 按钮来编辑所选组的属性。在“variables”部分,添加以下连接信息:ansible_connection: winrm
完成后,保存您的编辑。如果 Ansible 之前尝试 SSH 连接并失败,您应该重新运行作业模板。
要将现有的静态清单以及附带的主机和组的变量导入控制器,您的清单应采用类似如下的结构:
inventory/
|-- group_vars
| `-- mygroup
|-- host_vars
| `-- myhost
`-- hosts
要导入这些主机和变量,请运行 awx-manage
命令 :
awx-manage inventory_import --source=inventory/ \
--inventory-name="My Controller Inventory"
例如,如果您只有一个清单平面文件(名为 ansible-hosts 的文件),按如下所示将其导入:
awx-manage inventory_import --source=./ansible-hosts \
--inventory-name="My Controller Inventory"
如果有冲突,或者覆盖名为 "My Controller Inventory" 的清单,请运行:
awx-manage inventory_import --source=inventory/ \
--inventory-name="My Controller Inventory" \
--overwrite --overwrite-vars
如果出现错误,如:
ValueError: need more than 1 value to unpack
创建存放主机文件以及 group_vars 的目录:
mkdir -p inventory-directory/group_vars
然后,对于列出 :vars 的每个组,请创建名为 inventory-directory/group_vars/<groupname>
的文件,并以 YAML 格式设置变量格式。
退出后,导入程序将正确处理转换。