티스토리 뷰

Ansible

yaml syntax

looeon 2024. 2. 7. 18:09
yaml 기본 내용
yaml syntax

- 사람이 쉽게 읽을수 있다는 컨셉으로 개발된 데이터 양식
>> 구조화된 양식
- XML 이나 JSON 보다 읽기 쉽다
- 계층구조로 되어 있다. 부모 자식간의 관계

yaml 문서의 시작은 '---' 로 시작한다, 생략할수 있다.
yaml 문서의 끝은 '...' 으로 끝난다. 보통 생략한다.

1. 주석은'#' 으로 시작한다. 

2. 기본자료형은 리스트 및 딕셔너리(해시)로 표현

3. 리스트형은 하이픈(-) 으로 시작, 하이픈대신 대괄호를 사용해도 된다.

4. 들여쓰기를 일정한 간격으로 해야 한다.
>>> 들여쓰기가 맞지 않으면 에러가 발생한다.
5. yaml 에서는 tab 을 사용하면 오류가 난다
>>> 스페이스로 해야한다

6. 들여쓰기는 보통 2칸을 많이 사용한다.

7. 딕셔너리는 key: value 로 표현한다. 콜론뒤에는 보통 1칸을 띄운다.
>>> 파이썬에서는 문제 없다

8. yaml 파일은 확장자를 yaml 또는 yml 사용한다.

9. yaml 파일에서 하위레벨(종속관계)은 들여쓰기로 구분된다

---
# A list of tasty fruits
- Apple
- Orange
- Strawberry
- Mango
...

=> ["Apple","Orange","StrawBerry","Mango"] 로 표현가능

# An employee record
martin:
    name: Martin D'vloper
    job: Developer
    skill: Elite
=> {"martin": {"name": "Martin D'vloper","job": "Developer","skill": "Eilte"}}

# Employee records
-  martin:
    name: Martin D'vloper
    job: Developer
    skills:
      - python
      - perl
      - java
### - 시작하면 하나의 list
-  cane:
    name: Tabitha Bitumen
    job: Developer
    skills:
      - php
      - c
=> {"martin":  {"name": "Martin D'vloper","job": "Developer","skills": ["python","perl","java"]},
     "cane": {"name": " Tabitha Bitumen","job": "Developer","skills": ["php","c"]}}

* yaml 을 위한 vim 설정파일은 일반적으로 아래와 같이 작성한다
$HOME/.vimrc  
------------
syntax on autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab autoindent

* nano 편집기를 위한 설정파일
$HOME/.nanorc

 

 

 

배열은 [ ]
>>> fruits=["apple","orange","mango"]
>>> print(fruits);
['apple', 'orange', 'mango']

dictionary는 배열이 없다
>>> person={"name":"kildong","age":30,"addr":"seoul"}
>>> print{type(person)}
set([<type 'dict'>])
person={"name":"kildong","age":30,"addr":"seoul"}
key value key value key value 구조로 만들어 진다

좌측 :   >>> key
:  우측  >>> value

>>> print(person['name'])
kildong

>>> 배열이 상관 없으므로 보기 쉬운형태로 따로 출력

딕션어리는 key로 출력한다

>>> p={"martin": {"name": "Martin D'vloper","job": "Developer","skill": "Eilte"}}
>>> print(type(p));
<type 'dict'>
>>> print(p['martin'])
{'skill': 'Eilte', 'job': 'Developer', 'name': "Martin D'vloper"}
>>> print(p['martin']['job'])
Developer

martin은 key
p 는 변수
대괄호 안에는 key를 넣는다

>>> x={"martin":  {"name": "Martin D'vloper","job": "Developer","skills": ["python","perl","java"]},
...      "cane": {"name": " Tabitha Bitumen","job": "Developer","skills": ["php","c"]}}
>>> type(x)
<type 'dict'>
>>> print(x['cane']);
{'skills': ['php', 'c'], 'job': 'Developer', 'name': ' Tabitha Bitumen'}
>>> print(x['cane']['skills'];
  File "<stdin>", line 1
    print(x['cane']['skills'];
                             ^
SyntaxError: invalid syntax
>>> print(x['cane']['skills']);
['php', 'c']

 

 

 

yaml 실습

 

 

▶ hosts 와 tasks 는 깊이가 같아서 들여쓰기 X

▶ task 의 시작은 항상 리스트로 시작한다

:set cursorcolumn  >> 줄 맞추자

[devops@control test]$ ansible-playbook makeuser.yaml

 

▩ 에러발생함

set sw=2
shift + v 로 블록지정
shift + < or >
set autoindent >> 자동 들여쓰기 [ 괌형 혼자 꿀빰 ]

 

>> 새로 만들어서 실행

---
- name: test playbook
  hosts: all
  tasks: # task 의 시작은 항상 리스트로 시작한다.
    - name: present xuser1
      user:
        name: xuser1
        comment: jang nara
        uid: 2000
        group: wheel
        state: present
    - name: present xuser2
      user:
        name: xuser2
        state: present
...

제대로 됨

 

괌형이 뒤에서 괴롭힘

'Ansible' 카테고리의 다른 글

Visual Studio Code  (0) 2024.02.08
Ansible 환경 변수 / DB 연동  (0) 2024.02.08
Ansible 의 기본 동작  (0) 2024.02.07
공개키 옛날처럼 전달 / PGP,GPG  (0) 2024.02.07
Ansible 시작 [ 공개키 / 개인키 ]  (0) 2024.02.06
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함