Ansible: как установить несколько оборотов в минуту, но один на ос? - PullRequest
0 голосов
/ 03 марта 2020

Я хочу установить несколько оборотов в минуту, один для серверов Fedora, другой для сервера Centos. Я сделал этот файл playbook, но это неправильно

- name: Copy rpm file to server
  hosts: fedora
  copy:
     src: /tmp/pam_krb5-2.4.8-6.fc31.x86_64.rpm
     dest: /tmp/pam_krb5-2.4.8-6.fc31.x86_64.rpm

- name: Install package.
  hosts: fedora
  yum:
     name: /tmp/pam_krb5-2.4.8-6.fc31.x86_64.rpm
     state: present

- name: Copy another rpm file to server
  hosts: centos
  copy:
     src: /tmp/pam_krb5-2.4.8-6.el8.x86_64.rpm
     dest: /tmp/pam_krb5-2.4.8-6.el8.x86_64.rpm

- name: Install another package.
  hosts: centos
  yum:
     name: /tmp/pam_krb5-2.4.8-6.el8.x86_64.rpm
     state: present

Ответы [ 3 ]

2 голосов
/ 03 марта 2020

Ваша книга игр должна работать, но вы можете защитить себя вдвое, добавив оператор when:

- name: Copy another rpm file to server
  hosts: centos
  copy:
     src: /tmp/pam_krb5-2.4.8-6.el8.x86_64.rpm
     dest: /tmp/pam_krb5-2.4.8-6.el8.x86_64.rpm
  when:
    - ansible_facts['distribution'] == "CentOS"

- name: Install another package.
  hosts: centos
  yum:
     name: /tmp/pam_krb5-2.4.8-6.el8.x86_64.rpm
     state: present
  when:
    - ansible_facts['distribution'] == "CentOS"
1 голос
/ 05 марта 2020

Вы можете использовать 2 файла vars (по одному для каждого дистрибутива):

vars / centos_8.yml

packages:
  - pam_krb5-2.4.8-6.el8.x86_64.rpm
  - ...

vars / fedora_31.yml

packages:
  - pam_krb5-2.4.8-6.fc31.x86_64.rpm
  - ...

Тогда в ваших задачах вы можете сделать что-то вроде этого:

- name: Include vars for host distribution
  include_vars: "{{ ansible_distribution|lower }}_{{ ansible_distribution_major_version }}.yml"

- name: Copy RPM files to server
  copy:
     src: /tmp/{{ item }}
     dest: /tmp/{{ item }}
  with_items:
    - "{{ packages }}" 

- name: Install RPM packages
  yum:
     name: /tmp/{{ item }}
     state: present
  with_items:
    - "{{ packages }}"
0 голосов
/ 03 марта 2020

Я решил с немного другим синтаксисом

- name: Transfer and install a rpm for Centos server
  hosts: centos
  become_user: root
  tasks:
     - name: Copy another rpm file to server
       copy: src=/tmp/pam_krb5-2.4.8-6.el8.x86_64.rpm dest=/tmp/pam_krb5-2.4.8-6.el8.x86_64.rpm
     - name: Install the rpm
       command: dnf -y localinstall /tmp/pam_krb5-2.4.8-6.el8.x86_64.rpm

- name: Transfer and install a rpm for Fedora server
  hosts: fedora
  become_user: root
  tasks:
     - name: Copy another rpm file to server
       copy: src=/tmp/pam_krb5-2.4.8-6.fc31.x86_64.rpm dest=/tmp/pam_krb5-2.4.8-6.fc31.x86_64.rpm
     - name: Install the rpm
       command: dnf -y localinstall /tmp/pam_krb5-2.4.8-6.fc31.x86_64.rpm
...