2018년 5월 30일 수요일

[Ansible] MAGIC_VARIABLE에 대해서~

안녕하세요 ~!

오늘은 말이죠~! MAGIC_VARIABLE에 대해서 말해 보려고 합니다!!
이게 뭘까요?

매직?

magic shadowera에 대한 이미지 검색결과


이런 매직일까요? 하하 (참고로 제가 하는 게임입니다. !!)

그게 아니라 앤서블에 보면 
매직 변수라는게 있습니다. 


[ /usr/lib/python2.7/site-packages/ansible/constants.py ]

2.5.3 버전에서 보여지는 매직 변수인데 잘 눈에 안 들어오네요 


구 버전에 구조를 봅시다. 

MAGIC_VARIABLE_MAPPING = dict(
connection = ('ansible_connection',),
remote_addr = ('ansible_ssh_host', 'ansible_host'),
remote_user = ('ansible_ssh_user', 'ansible_user'),
port = ('ansible_ssh_port', 'ansible_port'),
accelerate_port = ('ansible_accelerate_port',),
password = ('ansible_ssh_pass', 'ansible_password'),
private_key_file = ('ansible_ssh_private_key_file', 'ansible_private_key_file'),
pipelining = ('ansible_ssh_pipelining', 'ansible_pipelining'),
shell = ('ansible_shell_type',),
become = ('ansible_become',),
become_method = ('ansible_become_method',),
become_user = ('ansible_become_user',),
become_pass = ('ansible_become_password','ansible_become_pass'),
become_exe = ('ansible_become_exe',),
become_flags = ('ansible_become_flags',),
ssh_common_args = ('ansible_ssh_common_args',),
docker_extra_args= ('ansible_docker_extra_args',),
sftp_extra_args = ('ansible_sftp_extra_args',),
scp_extra_args = ('ansible_scp_extra_args',),
ssh_extra_args = ('ansible_ssh_extra_args',),
sudo = ('ansible_sudo',),
sudo_user = ('ansible_sudo_user',),
sudo_pass = ('ansible_sudo_password', 'ansible_sudo_pass'),
sudo_exe = ('ansible_sudo_exe',),
sudo_flags = ('ansible_sudo_flags',),
su = ('ansible_su',),
su_user = ('ansible_su_user',),
su_pass = ('ansible_su_password', 'ansible_su_pass'),
su_exe = ('ansible_su_exe',),
su_flags = ('ansible_su_flags',),
executable = ('ansible_shell_executable',),
module_compression = ('ansible_module_compression',),
)
위에 보여지는 내용을 앤서블 플레이북이나, var_group 같은 곳에 넣으면 적용되는 변수들인 것입니다. 미리 정의되어 있는 변수들인거죠 FACTS와 별개로요~!

예를 들면, 코드 상에서 tasks 상에서 lldp의 sudo를 주기 위해서 보통 become에 yes를 넣게 되죠. 

---
- hosts: cl
  gather_facts: no
  tasks:
  - name: lldp service
    become: yes    service: name=lldpd state=restarted

그렇다면, 이런 예는 어떨까요? 

---
- hosts: cl
  gather_facts: no
  remote_user: cumulus
  become: yes
  vars:
    ansible_become_pass: CumulusLinux!
  tasks:
  - name: ssh-keygen
    service: name=lldpd state=restarted



 - remote_user      = ('ansible_ssh_user', 'ansible_user')
 - become_pass = ('ansible_become_password','ansible_become_pass')

쓰는 용법의 차이는 있지만, 이런 식으로 서로 바꾸어 가면서 쓸수 있습니다. 
아직은 완벽하게 어떤 부분은 vars에 쓰고, playbook에 쓰고, hosts에 쓰고가 정리가 되지 않은 느낌이긴 하나.~~ 서로 호환되는 이름이 어떤 것인지 안다면...

구글에서 검색해서 대략 만들수 있겠죠?

:) 도움이 되셨기를요오~!

0 개의 댓글:

댓글 쓰기

 
Copyright © . 시스템/네트워크 자동화 전문가 블로그 - Posts · Comments
Theme Template by BTDesigner · Powered by Blogger