ansible で yum localinstall

意外と苦戦したのでメモ。

rpm をアップロードした後、yum を使うのだが、 with_items だと警告が出まくる上に、依存関係でインストール失敗することもある。

こうしたい↓

yum install /usr/local/src/hoge.rpm /usr/local/src/fuga.rpm /usr/local/src/piyo.rpm

が、接頭辞として /usr/local/src を付与する方法が意外と大変だった。

結果として、set_fact からの regexp で解決。

var:
  software_rpm:
    - software1.2.3-4.rpm
    - software2.4.rpm
  rpm_dir: /usr/local/src/

tasks:
  - name: deploy rpm file
    copy:
      src:  'rpm/{{ item }}'
      dest: '{{ rpm_dir }}'
      owner: root
      group: root
      mode: "0644"
      force: no
      backup: no
    with_items: '{{ software_rpm }}'

  - set_fact:
    rpm_list: "{{ software_rpm | map( 'regex_replace','^','{{ rpm_dir }}' ) | list }}"

  - name: install postgres packages
    yum:
      name: "{{ rpm_list }}"
      state: present