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 을 활용하는 방법들에 대해서 추후에 알아보고자 한다.
'IT > LINUX' 카테고리의 다른 글
[Ansible] module user 의 password (0) | 2020.11.25 |
---|---|
[Ansible] Inventory - host pattern (0) | 2020.06.12 |
[Ansible] 원격지 계정 추가 및 sudo 권한 등록 (0) | 2020.06.08 |
[Ansible]Control node 의 configuration (0) | 2020.06.08 |
[Ansible] 설치(control node) (0) | 2020.06.06 |