Use HOME in case of using sudo [ansible]

メモ

ansible で sudo 時に実行ユーザの HOME 環境変数を取得する を参考にした。

以下のようなロールを作っておき、プレイブックの最初の方に含めておくと良い。 以降のロール実行時に、変数 ansible_home に格納された値を利用できる。

roles/regsiter_home/tasks/main.yml

1
2
3
4
5
6
7
8
9
10
11
- block:
- name: Get ansible_user home directory
shell: 'getent passwd "{{ansible_env.SUDO_USER}}" | cut -d: -f6'
register: ansible_home_result

- name: Set the fact for the other scripts to use
set_fact:
ansible_home: '{{ansible_home_result.stdout}}'
cacheable: true
tags:
- register_home

元記事と変えているのは、SUDO実行ユーザ名を取るところ。環境変数から取るようにしている。

プレイブックでは以下のようにする。

playbooks/something.yml

1
2
3
4
- hosts: "{{ server | default('mypc') }}"
roles:
- register_home
- something

参考

共有