인프라 작업을 사용자에게 받기 위해 Ansible Tower에서 한 일

소개



자주 하는 작업을 의뢰원에게 직접 해달라고 해피할 수 없는가?
AWX(AnsibleTower)라면 GUI도 있고 좋을지도
그렇게 생각하고 작업했을 때의 메모에서 인용했습니다.

도전


  • 사용자에게 필요한 데이터를 입력해야합니다 (인벤토리를 편집 할 수 없음).
  • 어쨌든 간단한 절차로

  • 대응책


  • AWX SURVEY 기능에 의존
  • Ansible delegate_to 를 이용했습니다

  • 1. AWX의 SURVEY 기능에 대해



    AWX에서는 작업 템플릿에 SURVEY라는 기능을 사용할 수 있습니다.
    SURVEY를 사용하면 작업이 실행될 때 프롬프트를 표시하고 extra_vars의 값을 입력하라는 메시지를 표시할 수 있습니다.
    입력값은 선택 형식으로 하거나, 디폴트값을 결정하고, 코멘트를 붙일 수 있어, 이용자의 팔로우를 할 수 있습니다.

    예를 들어 작업할 서버를 선택하기 위해 다음과 같은 SURVEY를 설정합니다.


    그러면 작업이 실행될 때 다음과 같이 프롬프트가 표시되고 입력 값을 선택하라는 메시지가 표시됩니다.


    또한 '선택'의 형식 이외에도 텍스트이거나 체크박스이거나 사용할 수 있습니다.
    자세한 내용은 다음 공식 문서를 이해하기 쉽습니다.
    htps : // / cs. 안시 bぇ. 이 m/안시 bぇ-토우 r/3. html # rr yys

    2. delegate_to와 결합



    작업에 이용하는 파라미터는 SURVEY로 모으는데 성공했지만, 작업 대상의 서버를 유연하게 변경하는 것이 어렵다.
    실행시에 인벤토리를 선택해 주면 좋지만 인벤토리의 정비나 권한 관리가 힘들다.
    그런 이유로 SURVEY와 Ansible의 delegate_to와 조합하여 이용했습니다.

    앞의 예에서라면 SURVEY에서 취득한 작업 대상 서버의 값(target_server)을 아래와 같이 Ansible playbook측에서 delegate_to 로 지정하기만 하면 됩니다.
    ---
    - name: Demo
      hosts: localhost
      tasks:
      - name: Create config file to work directory
        template:
          src: ./templates/ifcfg-eth0.jinja2
          dest: /tmp
          owner: root
          group: root
          mode: 0644
        delegate_to: "{{ target_server }}"
    

    이렇게 하면 손쉽게 사용자 측에서 작업 대상 서버를 전환할 수 있습니다.
    SURVEY의 기능으로 옵션을 제한할 수 있으므로, 작업 대상외의 서버에 액세스되는 것을 막을 수도 있습니다.

    결론



    짧지만 이상입니다.
    어드벤트 캘린더에 가입했지만 쓰려고했던 자료는 이미 기사가 있었기 때문에 당황하고 다른 자료를 썼습니다.

    좋은 웹페이지 즐겨찾기