IT/LINUX

[Ansible] ad hoc

송시 2020. 6. 12. 21:19
728x90

ansible 명령어를 재사용하지 않고 하나의 ansible 작업을 수행하는 명령어다.

 

뒤에 다시 언급하겠지만 ansible 은 하나의 행위를 play 라고 하고 이러한 plays 가 모여 playbok 을 이루게 된다.

 

ad hoc 명령어를 통해 하나의 play 를 수행하는 것과 같다.

 

ansible 의 ad hoc 은 매우 자유롭다. 정해져있는 형태는 있지만 이를 반드시 지키지 않아도 유연하게 작동한다.

 

ansible host-pattern -m module [-a 'module arguments'] [-i inventory]

 

host-pattern 은 inventory 를 기반으로 한다.

-m 을 통해 ansible-doc -l 명령어를 통해서 나오는 module 을 사용할 수 있고

-a 를 통해 module 의 인자를 사용할 수 있게 된다.

 

ping 이라는 모듈은 유닉스/리눅스 명령어의 ping 이 아닌 ansible에서 사용하는 ping module 이다.

 

이것을 성공하게 되면 ping : pong 이라는 메시지를 볼 수 있게 된다.

-a 를 붙이지 않아도 되는 모듈인셈이다.

 

그렇다고 ping 모듈이 인자가 없는가? 

 

ansible-doc ping 을 통해 확인해보자.

- data
        Data to return for the `ping' return value.
        If this parameter is set to `crash', the module will cause an
        exception.
        [Default: pong]
        type: str

 

[root@control ~]# ansible all -m ping -a 'data=ping'
localhost | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    }, 
    "changed": false, 
    "ping": "ping"
}

 

여러 모듈 중 자주 사용하게 되는 모듈들이 있는데 그것은 해당 인프라 환경에 따라 천차만별이라 환경에 맞게 알아봐야겠지만 모듈이 사실 엄청나게 많다.

[root@control ~]# ansible-doc -l|wc -l
3387

거의 왠만한 기능을 갖고 있음을 시사 한다.

 

[root@control ~]# ansible all -m debug -a 'msg="This is test debug msg"'
localhost | SUCCESS => {
    "msg": "This is test debug msg"
}

 

교육 교재에서도 그렇고 ad hoc 에 대한 예가 별로 없는데,

하나의 업무를 하는 play 가 여러 plays를 하고자 할때에는 ad hoc 을 통한 단일 명령어가 효과적이지 않기 때문인듯 싶다.

그래서 playbook 을 활용하는 방법들에 대해서 추후에 알아보고자 한다.

 

728x90