Как передать группы хостов в ansible? - PullRequest
0 голосов
/ 05 апреля 2019

Я работаю над возможной ролью для автоматизации установки vertica. Роль выполняется на кластере из 3 узлов. Я застрял в 2 местах.

  1. Я пытаюсь выполнить приведенную ниже команду, я хочу передать хосты из своего инвентаря группы, я передал run_once, который будет работать только на 1-м хосте (что я и хочу), но как пройти все 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
    

Ищем предложения!

Заранее спасибо!

1 Ответ

1 голос
/ 05 апреля 2019

Я пытаюсь выполнить приведенную ниже команду, я хочу передать хосты из своего инвентаря группы ...

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 путь к ключу в вашей локальной системе.

...