IT Share you

ansible에서 ansible을 실행하는 사용자의 이름으로 변수를 얻으려면 어떻게해야합니까?

shareyou 2020. 12. 2. 22:14
반응형

ansible에서 ansible을 실행하는 사용자의 이름으로 변수를 얻으려면 어떻게해야합니까?


ansible 스크립트 (예 : tlau)를 실행하는 사용자의 이름을 사용하고 해당 사용자 이름과 현재 날짜 / 시간 (예 : tlau-deploy-2014-10)을 기반으로 원격 시스템에 배포 디렉터리를 만드는 배포 프로세스를 스크립팅하고 있습니다. -15-16 : 52).

이것이 가능한 사실 (예 : LOGNAME 또는 SUDO_USER)에서 사용할 수 있다고 생각할 수 있지만 모두 "root"또는 원격 시스템에 ssh하는 데 사용되는 배포 ID로 설정됩니다. 여기에는 현재 ansible 프로세스를 실행중인 로컬 사용자가 포함되지 않습니다.

ansible 프로세스를 실행하는 사용자의 이름을 가져 와서 내 플레이 북에서 사용하려면 어떻게 스크립트를 작성합니까?


호스트 시스템의 사용자 이름을 의미한다면 로컬 작업을 실행할 수 있다고 생각합니다.

- name: get the username running the deploy
  become: false
  local_action: command whoami
  register: username_on_the_host

- debug: var=username_on_the_host

이 예에서 whoami명령 의 출력은 "username_on_the_host"라는 변수에 등록되고 사용자 이름은에 포함됩니다 username_on_the_host.stdout.

(디버그 작업은 여기서 필요하지 않으며 변수의 내용 만 보여줍니다.)


당신이 경우 gather_facts, 플레이 북에 대해 기본적으로 활성화되어있는이 내장라고 세트되는 변수 ansible_user_id작업이로 실행되고 있음을 사용자 이름을 제공한다. 그런 다음 다른 작업이나 템플릿에서이 변수를 사용할 수 있습니다 {{ ansible_user_id }}. 이렇게하면 해당 변수를 등록하기 위해 작업을 실행하는 단계를 줄일 수 있습니다.

참조 : http://docs.ansible.com/playbooks_variables.html#information-discovered-from-systems-facts


모든 템플릿에 다음과 같은 내용을 넣었습니다.

# Placed here by {{ lookup('env','USER') }} using Ansible, {{ ansible_date_time.date }}.

템플릿을 사용하면 다음과 같이 표시됩니다.

# Placed here by staylorx using Ansible, 2017-01-11.

내가 사용 {{ ansible_user_id }}하고 내가 루트가 되었다면 그 변수는 내가 대부분의 시간을 원하는 것이 아니라 "루트"를 나타낸다.

참고 URL : https://stackoverflow.com/questions/26394096/in-ansible-how-do-i-get-a-variable-with-the-name-of-the-user-running-ansible

반응형