Ansible 11: 변수 설명
자세 한 내용 은 < Ansible 2: 호스트 목록 > 참조
2. 플레이 북 에서 변 수 를 정의 합 니 다.
1. vars 키 워드 를 통 해 정의:
vars:
http_port: 80
server_name: localhost
cert_file: /etc/nginx/ssl/nginx.crt
key_file: /etc/nginx/ssh/nginx.key
conf_file: /etc/nginx/conf/default.conf
2, vars 를 통 해files 키워드 도입 변수 파일:
- hosts: all
remote_user: root
vars:
favcolor: blue
vars_files:
- /vars/external_vars.yml
- /vars/nginx_vars.yml
/vars/nginx_vars. yml 예제:
http_port: 80
server_name: localhost
cert_file: /etc/nginx/ssl/nginx.crt
key_file: /etc/nginx/ssh/nginx.key
conf_file: /etc/nginx/conf/default.conf
3 、 vars 를 통 해prompt 를 통 해 인간 과 컴퓨터 의 상호작용 을 실현 합 니 다.
hosts: all
remote_user: root
vars_prompt:
- name: 'https_passphrase' #데이터 저장 변수 이름
prompt: 'Key Passphrase' #수 동 입력 데이터
private: yes #이 값 이 yes 이면 사용자 의 입력 이 인쇄 되 지 않 습 니 다.
4. 플레이 북 의 roles 를 통 해 변 수 를 정의 합 니 다.
상세 한 내용 은 《 ansible 10: Playbook 의 역할 과 포함 》 을 보십시오.
3. 등록 변수
, , , register : , /etc/motd 'hi' , "mothd contains ther word hi":- name: test play
hosts: all
tasks:
- shell: cat /etc/motd
register: motd_contents
- shell: echo "motd contains the word hi"
when: motd_contents.stdout.find('hi') != -1 register :- name: registered variable usage as a with_items list
hosts: all
tasks:
- name: retrieve the list of home directories
command: ls /home
register: home_dirs
- name: add home dirs to the backup spooler
file: path=/mnt/bkspool/{{ item }} src=/home/{{ item }} state=link
with_items: home_dirs.stdout_lines
# same as with_items: home_dirs.stdout.split()
4. fact 를 통 해 원 격 호스트 변 수 를 가 져 옵 니 다.
우 리 는 이전에 ad - hoc 상용 모듈 을 말 할 때 setup 모듈 을 언급 하여 원 격 호스트 의 관련 정 보 를 얻 고 이 정 보 를 변수 로 플레이 북 에서 호출 할 수 있 습 니 다.setup 모듈 에서 이 정 보 를 얻 는 방법 은 fact 에 의존 하 는 것 이다.여기 서 우 리 는 얻 은 기본 fact 의 내용 을 자세히 설명 하지 않 습 니 다.ansible 은 미리 정 의 된 fact 의 내용 을 가 져 올 수 있 을 뿐만 아니 라 호스트 에 수 동 으로 fact 를 맞 출 수 있 습 니 다.로 컬 fact 라 고 합 니 다.로 컬 fact 는 기본적으로 대상 호스트 의 / etc / ansible / facts. d 디 렉 터 리 에 저 장 됩 니 다. 파일 이. ini 형식 이나 json 형식 이면 ansible 은 자동 으로 식 별 됩 니 다.이런 식 으로 불 러 오 는 fact 는 key 를 ansiblelocal 의 특수 변수 입 니 다.
다음은 간단 한 예제 입 니 다. 하나의. ini 형식의 example. fact 파일 내용 은 다음 과 같 습 니 다.
[book]
title=Ansible Book
author=Breeze Yan
대상 호스트 의 / etc / ansible / facts. d / 디 렉 터 리 에 복사 하고 debug 모듈 을 통 해 출력 합 니 다:
- name: print ansible_local
debug: var=ansibl_local
다음 내용 을 출력 합 니 다:
ok: [localhost] => {
"var": {
"ansible_local": {
"example": {
"book": {
"author": "Breeze Yan",
"title": "Ansible Book"
}
}
}
}
}
fact 에서 변 수 를 가 져 오지 않 으 려 면 다음 과 같은 방법 으로 fact 를 닫 을 수 있 습 니 다.
- hosts: whatever
gather_facts: no
5. set fact 모듈 을 사용 하여 새로운 변 수 를 정의 합 니 다.
에서 set fact 모듈 용법 에 대한 상세 한 설명 이 있 습 니 다.
6. 내장 변수
1、hostvars
지정 한 호스트 의 변 수 를 가 져 옵 니 다. 웹 서버 설정 파일 에 db 서버 의 ip 주 소 를 지정 해 야 한다 면, 이 db 서버 의 hostname 을 db. exmaple. com 으로 가정 합 니 다. ip 주 소 는 eth0 네트워크 카드 에 연결 되 어 있 습 니 다. 웹 서버 에서 db 서버 의 ip 주 소 를 다음 과 같이 호출 할 수 있 습 니 다.
{{ hostvars['db.example.com'].ansible_eth0.ipv4.address }}
주의해 야 할 것 은 db. example. com 은 ip 주 소 를 사용 하여 대체 할 수 없고 호스트 이름 이나 별명 만 사용 할 수 있 습 니 다.
2, inventory hostname 과 inventory hostname short
inventory hostname 은 Ansible 이 인식 하 는 현재 task 를 실행 중인 호스트 의 호스트 이름 입 니 다. inventory 에서 별명 을 정의 한 적 이 있다 면, 여기 가 바로 그 별명 입 니 다. inentory 에 다음 줄 이 포함 되 어 있다 면:
server1 ansible_ssh_host=192.168.1.1
inventory hostname 즉 server 1
hostvars 와 inventory hostname 변 수 를 이용 하여 현재 호스트 와 연 결 된 모든 변 수 를 출력 할 수 있 습 니 다.
- debug: var=hostvars[inventory_hostname]
inventory hostname 과 비슷 한 inventory hostname short 도 있 습 니 다. 호스트 의 inventory hostname 이 server 1. exmaple. com 이면 inventory hostname short 의 값 은 server 1 입 니 다.
3、group_names
현재 task 를 실행 하고 있 는 대상 호스트 가 있 는 호스트 그룹 을 표시 하 는 데 사 용 됩 니 다. 호스트 가 세 대 있다 면 주 2 종 my sql 서버 로 설정 할 수 있 습 니 다. inventory 설정 은 다음 과 같 습 니 다.
[mdb]
db1
[sdb]
db2
db3
mysql 프로필 my. conf. j2 예 는 다음 과 같 습 니 다.
{% if 'db1' in group_names %}
[mysqld]
server-id=1
log-bin=mysql-bin
log-bin-index=mysql-bin.index
sync-binlog=1
innodb_flush_log_at_trx_commit=1 #db1 이 mdb 그룹 에 있다 는 것 을 알 고 있 습 니 다. db1 과 현재 c 그룹 을 실행 할 때 현재 호스트 가 mdb 그룹 이 라 고 생각 하기 때문에 현재 호스트 에 my sql master 설정 을 적용 합 니 다.
{% else %}
[mysqld]
server-id=2
relay-log=relay-log
relay-log-index=relay-log.index
read-only = yes
sync_master_info = 1
sync_relay_log = 1
sync_relay_log_info = 1
relay_log_recovery = 1
skip_slave_start #db1 이 현재 호스트 와 같은 그룹 에 없 을 때 현재 호스트 가 mdb 그룹 에 없다 고 생각 합 니 다. 즉, my slave 설정 을 사용 합 니 다.
{% endif %}
우 리 는 다음 과 같은 task 를 실행 합 니 다.
- name: copy config file to mysql master
template: src=my.conf.j2 dest=/etc/my.cnf
4、groups
호스트 의 변 수 를 방문 하려 면 groups 변 수 는 유용 합 니 다. inventory 파일 이 다음 과 같이 정의 된다 면:
[web]
server1
server2
HAproxy 의 부하 이퀄 라이저 를 설정 할 때, 우리 의 설정 파일 은 웹 그룹의 모든 서버 의 IP 가 필요 합 니 다. 설정 파일 은 다음 과 같은 세 션 을 포함 합 니 다.
backend web-backend
{% for host in groups.web%}
server {{host.inventory_hostname}} {{ host.ansible_default_ipv4.address }}:80
{% endfor %}
마지막 으로 생 성 된 파일 은 다음 과 같 습 니 다.
backend web-backend
server server1 192.168.1.1
server server2 192.168.1.2
모든 dbserver 그룹의 서버 에 데이터베이스 사용자 kate 를 만 드 는 예 를 들 어 보 겠 습 니 다.
- name: Create a user for all db servers
mysql_user: name=kate password=test host={{ hostvars.[item].ansible_eth0.ipv4.address }} state=present
with_items: groups['dbservers']
5、play_hosts #현재 플레이 북 은 어떤 hosts 에서 실 행 됩 니까?
6、ansible_version #현재 ansible 버 전
7、inventory_dir #호스트 목록 이 있 는 디 렉 터 리
8、inventory_file #호스트 목록 파일
7. 명령 행 을 통 해 변 수 를 설정 합 니 다.
예 는 다음 과 같다.
---
- hosts: '{{ hosts }}'
remote_user: '{{ user }}'
tasks:
- ...
ansible-playbook release.yml --extra-vars "hosts=vipers user=starbuck"
다음 과 같은 방식 으로 쓸 수도 있다.
--extra-vars '{"pacman":"mrs","ghosts":["inky","pinky","clyde","sue"]}'
,ansible debug 。 fact fact 、
1、extra vars( -e)
2、inventory (ansible_ssh_user )
3、play vars、vars_files
4、 inventory
5、 facts
6、 (roles/rolesname/defaults/main.yml)
: ,
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Login & Register with the MERN Stack (part5)create component for Login, Register set up redux auth를 위한 Login.js와 Register.js파일을 auth 폴더 내에 생성한다. 1. Register.js emai...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.