답변:
Ansible yum
모듈은 이미이 문제에 대한 솔루션을 제공합니다. 서버의 로컬 rpm 파일 경로는 name
매개 변수 로 전달 될 수 있습니다 .
로부터 Ansible 냠 모듈 문서 :
URL 또는 로컬 경로를 rpm 파일로 전달할 수도 있습니다. 여러 패키지에서 작동하려면 쉼표로 구분 된 패키지 목록 또는 (2.0 현재) 패키지 목록을 사용할 수 있습니다.
이를 수행하는 올바른 단계는 다음과 같습니다.
- name: Copy rpm file to server
copy:
src: package.rpm
dest: /tmp/package.rpm
- name: Install package.
yum:
name: /tmp/package.rpm
state: present
실제로 yum
모듈은 주어진 URL에서 직접 RPM을 설치할 수 있습니다.
- name: Remote RPM install with yum
yum: name=http://example.com/some_package.rpm
소스 머신에서 여러 개의 RPM을 설치하려면 다음을 수행하십시오.
- name: mkdir /tmp/RPMS
file: path=/tmp/RPMS state=directory
- name: copy RPMs to /tmp/RPMS
copy:
src: "{{ item }}"
dest: /tmp/RPMS
with_fileglob:
- "../files/*.rpm"
register: rpms_copied
- name: local RPMs not found
fail:
msg: "RPMs not found in ../files/"
when: rpms_copied.results|length == 0 and rpms_copied.skipped and rpms_copied.skipped_reason.find('No items') != -1
- set_fact:
rpm_list: "{{ rpms_copied.results | map(attribute='dest') | list}}"
- name: install RPMs
yum:
name: "{{rpm_list}}"
같은 문제를 겪고 @Jim Hunziker의 게시물이 올바른 방향으로 나아 갔기 때문에 특정 rpm 버전을 설치하기위한 솔루션을 공유하고 필요한 경우 rpm을 업로드하는 것을 좋아합니다.
---
- hosts: testhosts
tasks:
- name: check if package installed
command: rpm -q --qf "%{VERSION}\n" package
args:
warn: false
register: package_installed
failed_when: false
changed_when: package_installed.rc != 0
- name: check package version
shell: "[[ `rpm -q --qf \"%{VERSION}\n\" package` == '{{ package_version }}' ]]"
args:
warn: false
register: package_installed_version
failed_when: false
changed_when: package_installed_version.rc != 0
- name: uninstall old package
yum:
name: package
state: removed
when: package_installed_version.rc != 0 and package_installed.rc == 0
- name: copy package-rpm to /tmp
copy:
src: package-{{ package_version }}-1.el7.x86_64.rpm
dest: /tmp/
notify:
- remove package-rpm from /tmp
when: package_installed_version.rc != 0
- name: install package
yum:
name: /tmp/package-{{ package_version }}-1.el7.x86_64.rpm
state: present
when: package_installed_version.rc != 0
handlers:
- name: remove package-rpm from /tmp
file:
name: /tmp/package-{{ package_version }}-1.el7.x86_64.rpm
state: absent
yum이 없기 때문에 rpm 명령을 필수로 사용해야했습니다 (AIX OS 임).
나는 이것으로 dem 등원을 해결했다.
- command: rpm -U "{{rpm}}"
args:
warn: false
register: rpm_install
failed_when: rpm_install.rc != 0 and "is already installed" not in rpm_install.stderr
changed_when: rpm_install.rc == 0