티스토리 뷰

Cloud/Private Cloud

ansible set_fact

Jacob_baek 2018. 6. 7. 14:16


다음과 같은 return value를 변수로 등록하고 실제 playbook 상에서 사용할 수 있다.


tasks:
  - name: get vg name
    shell: >
      vgdisplay | grep "VG Name" | awk '{print $3}'
    register: vgname_result

  - set_fact: vgname={{ vgname_result.stdout }}

  - name: print name
    shell: lvdisplay -v /dev/{{vgname}}/root


위와 같이 set_fact를 사용하여 객체가 아닌 실행 결과만을 전달받을수 있다.


일반적으로 return 된 결과는 아래와 같이 여러 속성을 포함한 결과를 return 한다.


ok: [localhost] => {
    "msg": {
        "changed": true,
        "cmd": "cat ~/.ssh/id_rsa.pub",
        "delta": "0:00:00.001729",
        "end": "2018-07-05 11:14:29.077022",
        "failed": false,
        "rc": 0,
        "start": "2018-07-05 11:14:29.075293",
        "stderr": "",
        "stderr_lines": [],
        "stdout": "ssh-rsa XXXXXXXXXXXXXX jacob@localhost.localdomain",
        "stdout_lines": [
            "ssh-rsa XXXXXXXXXXXXXX jacob@localhost.localdomain"
        ]
    }
}

단순결과만이 필요한 경우라면 set_fact를 활용해 varaible를 지정하는것이 좋다.


반대로 array와 같은 형태로 전달받고자 할 경우라면 앞서 설명했던 객체형태 그대로 받는것이 좋다.


tasks:

- name: get the ls result as array

  command: ls /root/

  register: lsresult


- name: print items in ls result

  debug:

    msg: "{{ item }}"

  with_items: {{ lsresult.stdout_lines }}



참고사이트

- https://www.safaribooksonline.com/library/view/ansible-up-and/9781491915318/ch04.html

- https://stackoverflow.com/questions/29635627/register-variables-in-loop-in-an-ansible-playbook

'Cloud > Private Cloud' 카테고리의 다른 글

nested virtualization enable on Red Hat Virtualization  (0) 2018.10.31
How to analysis for Soure Code  (0) 2018.08.30
rsyslog omsnmp  (0) 2018.05.30
impossible to access openstack horizon  (0) 2017.09.01
ansible tower  (0) 2017.07.03
댓글
댓글쓰기 폼