Импорт / добавление yum .repo файла с помощью Ansible - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь установить MariaDB (или любое программное обеспечение) из собственного репозитория с использованием Ansible, но я не уверен, как импортировать файл .repo с использованием модулей yum / yum_repository .

Ansible

Вот моя книга игр:

-
    hosts: all
    become: true
    remote_user: root
    tasks:
        -
            name: set system timezone
            timezone:
                name: America/Toronto
        -
            name: add custom repository
            yum_repository:
                name: centos_o
                description: custom repositories
                baseurl: http://example.net/mirror/centos_o.repo
        -
            name: ensure mariadb is installed
            yum:
                name: mariadb-server-5.5.*
                state: installed

Я перепробовал все include, metalink, baseurl и mirrorlist без удачи.Также я пропускаю шаг ключа GPG, но я даже не могу правильно добавить репо.

Файл centos_o.repo выглядит следующим образом:

# JENKINS
[jenkins]
name=CentOS-$releasever - JENKINS
baseurl=http://example.net/mirror/jenkins/
enabled=0
gpgcheck=1

# MariaDB 5.5
[mariadb]
name=CentOS-$releasever - MariaDB
baseurl=http://example.net/mirror/mariadb/yum/5.5/centos$releasever-amd64/
enabled=0
gpgcheck=1

# MariaDB 10.0
[mariadb]
name=CentOS-$releasever - MariaDB
baseurl=http://example.net/mirror/mariadb/yum/10.0/centos$releasever-amd64/
enabled=0
gpgcheck=1

Оболочка

Это версия сценария оболочки, которую я пытаюсь преобразовать в Ansible:

yum clean all
yum-config-manager --add-repo=http://example.net/mirror/centos_o.repo
yum-config-manager --enable mariadb
rpm --import http://example.net/mirror/mariadb/RPM-GPG-KEY-MariaDB

Если это имеет какое-то значение, я запускаю его с помощью Ansible локального поставщика Vagrant на CentOSкоробка.

Ответы [ 2 ]

0 голосов
/ 15 июня 2019

Используйте команду shell с флагом create.Это пропустит шаг, если файл репо существует.Вам нужно убедиться, что вы знаете, как называется файл репо.

- name: Add CentOS_o repository
  shell: yum-config-manager --add-repo=http://example.net/mirror/centos_o.repo
  args:
    creates: /etc/yum.repos.d/centos_o.repo 

Если вам нужно добавить какую-либо архитектуру в URL, используйте что-то вроде

- name: Add CentOS_7_speciality repository
  shell: yum-config-manager --add-repo=http://example.net/{{ ansible_distribution | lower }}/{{ ansible_distribution_major_version }}/{{ ansible_architecture }}/
centos_o.repo
  args:
    creates: /etc/yum.repos.d/centos_o.repo 

Ansible заменитпеременные с

{{ ansible_distribution | lower }} == centos
{{ ansible_distribution_major_version }} == 7
{{ ansible_architecture }} == x86_64
0 голосов
/ 31 декабря 2018

Это кажется , что вы правы, они не предлагают то, что вы ищете.Их модель такова, что вы будете вызывать yum_repository: 3 раза, по одному разу с каждым из baseurl= значений, которые у вас уже есть в вашем файле .repo.

Таким образом, учитывая ваши обстоятельства, я бы рекомендовал простоиспользуя command: для запуска yum-config-manager --add-repo так же, как вы находитесь в оболочке.Единственный улов этого может быть, если yum-config-manager --add-repo= не является идемпотентом, и в этом случае вам придется вручную охранять этот command:, чтобы он не добавлял один и тот же файл репо снова и снова при каждом запуске.

...