Ansible - 변수
> inventory 또는 playbook에 작성한다.
> 어디든 변수를 붙여주면 사용할 수 있다.
> 변수 사용 예
: 슬레이브에서 마스터 IP를 작성해야할 때, 마스터 IP가 바뀔 수도 있기 때문에,
파일 내에서 변수로 지정한다. 그리고 변수만 따로 저장한 파일에서 해당 변수의 값을 바꾸면 적용이 된다.
> ansible_facts, hostvars은 앤서블을 실행하면서 생성되는 특수 변수이다.
변수 실습해보기
- playbook에서 선언한 변수 사용해서 "web"이라는 매니지드 노드에 변수 이름의 파일 생성하기
- vars.yml이라는 따로 변수들만 저장하는 파일을 만들어서 해당 파일 호출해서 변수 사용하기
> vars.yml 작성
var03: 30
var04: 40
> playbook 작성(vars 파일에 저장한 변수 호출 후 사용)
- hosts: ["web"]
tasks:
- name: create file # 변수이름의 파일 생성
shell: |
echo "{{ var01 }}" > /root/"{{ var02 }}" # 변수 사용시 큰 따옴표로 묶어주기
become: yes
- name: print
debug:
msg: "{{ var01 }}"
become: yes
- name: load vars # 파일에서 변수 호출
include_vars: "[vars 파일 경로]" # vars.yml까지 작성
- name: print
debug:
msg: "{{ var03 }}"
become: yes
vars:
var01: 10
var02: 20
> 결과
Ansible - register, stat, set_fact 모듈
> register는 모듈 실행 결과를 저장할 때 사용한다.
> set_fact는 동적으로 변수를 저장할 때 사용한다.
> 파일이 있는지 없는지 확인할 때는 stat 모듈을 사용한다.
아래의 코드는 위의 3가지 모듈 사용 예이다.
- hosts: ["web"]
tasks:
- name: create file
shell: |
df -h | grep /dev/mapper/cs-root | awk -F" " '{print $5}' | cut -d'%' -f 1
register: df_result
become: yes
- set_fact: var05={{ df_result.stdout }}
- name: print
debug:
msg: "{{ var05 }}"
become: yes
- name: test
stat:
path: /root
register: root_stat
become: yes
- name: print
debug:
msg: "{{ root_stat }}"
- name: print
debug:
msg: "{{ root_stat.stat.exists }}"
> 결과
web에서 저 "%" 수치를 가져오고자 한다.
잘 가져와 진 듯 하다.
다음 코드는 root_stat 출력하고, 그 중에 exist 결과만 출력하기
root_stat.stat.exists(파일이 있는지) 출력
'클라우드 > AWS' 카테고리의 다른 글
Ansible) 앤서블 동적 인벤토리, AWS 동적 인벤토리 사용해보기 (0) | 2023.03.29 |
---|---|
Ansible) 앤서블이란? 앤서블에 대해(Control 노드 구성, 모듈 구성) (0) | 2023.03.28 |
IaC) Infrastructure as Code, 쉘 프로그래밍, 쉘 스크립트 만들기 (0) | 2023.03.27 |
장고와 Redis 연결 후 사용하기(2) - 이메일 인증(gmail사용) (0) | 2023.03.24 |
장고와 Redis 연결 후 사용하기(1) - 로그인 세션 저장 (0) | 2023.03.24 |