Ansibleを触って3日目。ほぼマスターしたと思ったそんな時。
pacemakerのインストールをlocalinstallするために、事前にyumdownloader –resolve でダウンロードした複数のパッケージを、localinstallで同時に一気にドーンとしたい。
with_itemsを使ってループすると、1つずつyumが実行されてしまうため、参照している外部リポジトリからパッケージをもってきてしまう。
今回はそんな時に見つけた、ファイル一覧を一気にドーン(localinstall)する場合のメモを残しておきます。
リモートサーバ上の特定ディレクトリ配下のrpmパッケージを一発でyumる方法
# roles/pacemaker/tasks/main.yml # リモートサーバ上にRPMパッケージ格納ディレクトを作成 - name: create tmp directory file: path: /tmp/pacemaker state: directory owner: root group: root mode: 0755 # ローカルサーバ上のとfiles/配下にある「*.rpm」ファイルを # リモートサーバ上にアップロード - name: upload rpm packages copy: src: "{{ item }}" dest: /tmp/pacemaker/ owner: root mode: 0644 with_fileglob: - "files/*.rpm" become: yes # リモートサーバ上にアップしたファイル一覧を「find_result」に収める - name: find rpm files find: paths: "/tmp/pacemaker" patterns: "*.rpm" register: find_result # 「find_result」から「rpm_list」を作成 - name: create file list set_fact: rpm_list: "{{ find_result.files | map(attribute='path') | list }}" # 「rpm_list」を元にyumlocalinstall - name: yum localinstall yum: name: "{{ rpm_list }}" state: present # アップロードに利用したディレクトリの削除 - name: delete tmp directory from remote file: path: "/tmp/pacemaker" state: absent become: yes
以上!
コメント