【问题标题】:How to pass a groups hosts in ansible?如何在ansible中传递组主机?
【发布时间】:2019-04-05 18:54:34
【问题描述】:

我正在担任 ansible 角色以自动化 vertica 的安装。该角色在 3 节点集群上运行。我被困在两个地方。

  1. 我正在尝试运行以下命令,我想从我的组清单中传递主机,我已经传递了 run_once,它将仅在第一个主机上运行(这是我想要的)但是如何传递所有 3 台主机,例如 --hosts xx.xxx.xx.xx,xx.xxx.xx.xx,xx.xxx.xx.xx 我该如何实现?

  2. 我希望 ansible 使用我传递的 pem 密钥来安装 vertica。密钥应该存储在哪里。

    - name: Install vertica
      command: /opt/vertica/sbin/install_vertica --hosts x.xx.xx.xx,xx.xxx.xx.xx,xx.xxx.xx.xx --rpm /opt/vertica-{{ vertica_version }}.x86_64.RHEL6.rpm --dba-user-password-disabled --point-to-point --data-dir /vertica/data --ssh-identity x.pem
      when: vertica_already_installed|failed
      run_once: True
      become: yes
    

寻找建议!

提前致谢!

【问题讨论】:

    标签: ansible vertica ansible-2.x


    【解决方案1】:

    我正在尝试运行以下命令,我想从我的群组清单中传递主机...

    Ansible 为您提供groups 变量。这是一个字典,其键是组名,值是每个组中的主机列表。因此,例如,如果您有一个名为 vertica_servers 的组,您可以编写如下内容:

    - name: Install vertica
        command: /opt/vertica/sbin/install_vertica --hosts ','.join(groups.vertica_servers) ...
    

    我希望 ansible 使用我传递的 pem 密钥来安装 vertica。密钥应该存储在哪里?

    听起来你有一个 ssh 私钥,install_vertica 命令将使用它来访问集群中的主机。您需要首先在运行install_vertica 命令的远程主机上提供该私钥。你可以通过copy 任务来做到这一点:

    - name: install private key
      copy:
        src: "{{ private_key_file }}"
        dest: "/root/.ssh/vertica_key.pem"
        mode: "0400"
        owner: root
        group: root
    

    然后将该路径传递给您的install_vertica 命令:

    - name: Install vertica
        command: /opt/vertica/sbin/install_vertica --hosts ','.join(groups.vertica_servers) --ssh-identity /root/.ssh/vertica_key.pem
    

    这假定您已将 private_key_file 设置为本地系统上密钥的路径。

    【讨论】:

    • 对不起,让我换一种方式来表达我的问题,上面的命令使用密钥登录到集群中的其他节点来安装vertica。所以我想知道如何在 ansible 中使用 pem 键来实现这一点?如果我手动运行,我会给出存储在 host1 中的密钥的路径。所以基本上它从 host1 运行上述命令,但从 host1 使用 pem 密钥它需要连接到其他 2 台主机并安装 vertica
    • 在运行 ansible 之前,现在的密钥存储在哪里?你在本地有吗?是否已经安装在远程主机上?
    • 我正在从我的开发机器运行我的 ansible 命令,并使用 id_rsa key 登录到服务器。我已经在 ~/.ssh/authorized_keys 的所有 3 个节点中复制了 id_rsa.pub。是的,我在 ~/.ssh/x.pem 中有本地密钥
    猜你喜欢
    • 2016-09-27
    • 1970-01-01
    • 2020-12-28
    • 2017-11-09
    • 2016-12-30
    • 2021-08-26
    • 1970-01-01
    • 2019-11-08
    • 2020-11-09
    相关资源
    最近更新 更多