【问题标题】:Ansible Hostname as variable in ansible_userAnsible 主机名作为 ansible_user 中的变量
【发布时间】:2019-06-20 07:20:50
【问题描述】:

在 ansible 方面需要帮助。在我们公司,我们使用以下方法 ssh 到服务器。 如果服务器的 IP 是 172.16.1.8 ,则用户名将是“empname~id~serverIP”,例如约翰~1234~172.16.1.8。所以使用以下 ssh 命令 -

> ssh john~1234~172.16.1.8@172.16.1.8 -i key.pem

基本上用户名将主机名作为变量。

现在我们的广告资源只有带有组网的 IP。

> cat inventory.txt
[web]
172.16.1.8
172.16.x.y
172.16.y.z

我的剧本 yml 有如下的 ansible 用户。

> cat uptime.yml
- hosts: web
  vars:
    ansible_ssh_port: xxxx
    ansible_user: john~1234~{{inventory_hostname}}
  tasks:
  - name: Run uptime command
    shell: uptime

但是,当我使用以下 ansible-playbook 命令时,它会因用户名不正确而出错。

> ansible-playbook -v uptime.yml -i inventory.txt --private-key=key.pem

请帮我在 playbook 中找到正确的 ansible_user,其中包含主机名作为变量。

【问题讨论】:

    标签: ansible


    【解决方案1】:

    使用组变量有帮助 -


    ansible_ssh_port: xxxx ansible_user: "john~1234~{{ inventory_hostname }}"

    【讨论】:

      【解决方案2】:

      你可以在group_vars/web.yml中定义ansible_user

      group_vars/web.yml

      ---
      ansible_ssh_port: xxxx
      ansible_user: "john~1234~{{ inventory_hostname }}"
      

      【讨论】:

      • 我试过关注,group var,但没有帮助,调试也不起作用,看不到 ansible_user 变量的输出 - --- vars: ansible_user: john~1234~{{ inventory_hostname }} -debug: var=ansible_user
      • 从你的剧本中删除 vars:section
      猜你喜欢
      • 1970-01-01
      • 2016-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多