如何在ansible中传递组主机?

问题描述 投票:0回答:1

我正在开发一个ansible角色来自动安装vertica。该角色在3节点群集上运行。我被困在2个地方。

  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个回答
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设置为本地系统上密钥的路径。

© www.soinside.com 2019 - 2024. All rights reserved.