ansible 기본 자습서
특징
inventory = /etc/ansible/hosts # inventory
Inventory
Ansible는 지정한 서버만 관리할 수 있으며 inventory 파일에서 대응하는 호스트/그룹의 데이터를 설정할 수 있습니다. 그 형식은 다음과 같습니다.
-- ( )
[webservers]
--
foo.example.com
-- + ssh
jumper ansible_ssh_host=192.168.1.50 ansible_ssh_user=appadmin
--01 50, hostname
www[01:50].example.com
-- host , playbook
host1 http_port=80 maxRequestsPerChild=808
-- group , host
[atlanta]
host1
host2
[atlanta:vars]
ntp_server=ntp.atlanta.example.com
proxy=proxy.atlanta.example.com
--
[southeast:children]
atlanta
raleigh
Ansible Ad-Hoc 명령
ansible -m -a
사용 예: ping 호스트
ansible -i hosts webservers -m ping --ask-pass -u user
ansible -i hosts all -m ping --ask-pass -u user
출력:
[root@Centos7 ~]# ansible all -m ping
host1 | success >> {
"changed": false,
"ping": "pong"
}
host2 | UNREACHABLE! => {
"changed": false,
"msg": "Authentication failed.",
"unreachable": true
}
매개 변수 해석
Ansible Playbook
---
- hosts: all # tasks ,all
become: yes # tasks, task 。
become_user: root
remote_user: username #the user log into machine.
tasks:
# task
# task , , task
# task
- name: copy local file to remote machine
#
copy:
src: ~/test
dest: ~/test
owner: root
mode: 0600
# ,
register: rsa
#
environment:
JAVA_HOME: /usr/java/jre1.8.0_51
# task , host task , 。
ignore_errors: yes
# task tags, tags task ( :-t deploy)
tags: deploy
# (call the tasks defined in handlers if module does some changes to the remote host)
notify:
- do something
# defines a list of tasks
handlers:
- name: do something
service: test
- name: task 2
debug: var={{ host_vars }} # host host_vars
test # inventory ,
test.yml # playbook
[server]
host1 ansible_ssh_host=1.1.1.1 ansible_ssh_user=appadmin
host2 ansible_ssh_host=1.1.1.2 ansible_ssh_user=appadmin
---
- hosts: all
tasks:
- name: get hostname
shell: hostname
register: out
- debug: var=out
$ ansible-playbook -i test test.yml
, 반환 내용: PLAY [all] *********************************************************************
TASK [setup] *******************************************************************
ok: [host1]
ok: [host2]
TASK [get hostname] ************************************************************
changed: [host1]
changed: [host2]
TASK [debug] *******************************************************************
ok: [host1] => {
"out": {
"changed": true,
"cmd": "hostname",
"delta": "0:00:00.003584",
"end": "2017-02-09 16:05:04.043118",
"rc": 0,
"start": "2017-02-09 16:05:04.039534",
"stderr": "",
"stdout": "host1.com",
"stdout_lines": [
"host1.com"
],
"warnings": []
}
}
ok: [host2] => {
"out": {
"changed": true,
"cmd": "hostname",
"delta": "0:00:00.003584",
"end": "2017-02-09 16:05:04.043118",
"rc": 0,
"start": "2017-02-09 16:05:04.039534",
"stderr": "",
"stdout": "host2.com",
"stdout_lines": [
"host1.com"
],
"warnings": []
}
}
PLAY RECAP *********************************************************************
# host task ,ok task ,charged host task 。
host1 : ok=3 changed=1 unreachable=0 failed=0
host2 : ok=3 changed=1 unreachable=0 failed=0
role 사용
test
test.yml
roles/
install/
files/
templates/
tasks/
main.yml # install , main.yml
handlers/
vars/
deploy/
files/
templates/
tasks/
main.yml
handlers/
vars/
---
- hosts: webservers
roles:
- install
- deploy
부분 공통 모듈
실제 장면 응용
참조:
an-intro-to-network-automation-3-ansible an-ansible-tutorial ansible-simple-tutorial
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.