2016-09-26 2 views
2

여러 명의 사용자가 사용할 수있는 게임 플레이 북이 있습니다. 게임 플레이 북은 감사 부서에서 만든 배치 스크립트를 실행합니다. 우리는 어떤 식 으로든 스크립트를 수정할 수 없습니다. 스크립트는 서버에 대한 다양한 정보를 가져와 사용자 "Documents"폴더 내의 폴더로 출력합니다. 내 목표는가변 사용자 ID가있는 Windows 디렉토리 경로의 대체 사용자 이름

  1. 가 보관 다운로드 오래된 감사 데이터
  2. 실행 배치 스크립트
  3. 보관 폴더
  4. 를 제거합니다 심사 팀에서 누구나 실행할 수있는 Ansible의 각본을 만드는 것입니다 폴더
나는 현재 다음과 같은 작업이 만든

:

--- 
- name: Remove old audit data 
    win_file: 
    path=C:\Users\my-username\Documents\PCI-Audit-Evidence 
    state=absent 

- name: Run audit check 
    script: ../files/Windows-2008-2012-PCI.cmd 

- name: Archive audit folder for download 
    script: ../files/zipfolder.ps1 

- name: Download audit file 
    fetch: 
    dest: "audits/{{ inventory_hostname }}/" 
    src: "C:/Users/my-username/Documents/PCI-Audit-Evidence.zip" 
    flat: yes 
,536,

모든 것이 문제없이 작동합니다. 내 문제는 첫 번째 작업과 마지막 작업의 소스 필드에 내 사용자 이름을 하드 코딩 한 것입니다. 나는 "my-username"이 누구인지에 따라 달라지는 변수가되어야합니다. Windows 환경 변수 "$ env : username"을 사용해 보았지만 작동하지 않습니다. 나는 또한 "{{ansible_user_id}}"를 시도했지만 Windows 2008 서버의 사실을 검토 한 후, 실제로는 실제로 사용자 이름을 사실로 기록하지 않습니다 ..

제가 생각할 수있는 유일한 일은 실행중인 다른 작업을 추가하는 것입니다. 스크립트는 서버에 로그인하고 whoami를 또는 무언가를 실행 한 다음 변수로 등록하지만 지나치게 복잡한 것 같다하기

이 작업을 수행 할 수있는 쉬운 방법이 있나요

참고 :.? 난에 사용자 이름이 필요합니다 원격 시스템에서 가져올 수 있습니다.

또한 어떻게 파일을 가져 와서 로컬 이미 존재한다면 기계?

당신은 환경을 사용할 수 있습니다

답변

3

변수 USERPROFILE (또는 USERNAME 엄격하게 질문에 대답) :

- name: Remove old audit data 
    win_file: 
    path: "{{ ansible_env.USERPROFILE }}\Documents\PCI-Audit-Evidence" 
    state: absent 

- name: Download audit file 
    fetch: 
    dest: "audits/{{ inventory_hostname }}/" 
    src: "{{ ansible_env.USERPROFILE }}\Documents\PCI-Audit-Evidence.zip" 
    flat: yes