Skip to content

Instantly share code, notes, and snippets.

@sigridjineth
Last active December 9, 2023 02:32
Show Gist options
  • Save sigridjineth/cf82dcd8b7446db96495c27650948809 to your computer and use it in GitHub Desktop.
Save sigridjineth/cf82dcd8b7446db96495c27650948809 to your computer and use it in GitHub Desktop.
앤서블로 시작하는 인프라 자동화

앤서블로 시작하는 인프라 자동화 - POR로 읽기

POR이란

  • 김창준님이 만드신 독서법으로, 개인의 문제를 해결하는 것에 중점을 두고 독서하는 방식을 의미한다.
  • 나는 3장, 앤서블을 적용한 예시부터 독서하기 시작했다.

예시 - IP 자동으로 설정하기

ansible.cfg

[defaults]
inventory = ./inventory
remote_user = ansible
ask_pass = false
roles_path = ./roles

[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false

set_ip.yml

  • 아래와 같이 레드햇에 실행할 예시를 작성한다.
- hosts: tnode1-centos.exp.com
  vars:
    fedora_os: 
      - CentOS
      - RedHat
    net_info:
      - con_name: enp7s0
        ip_addr: 192.168.20.5/24
        ip_gw: 192.168.20.1
        ip_dns: 192.168.20.1

  tasks:
  - name: Include role in CentOS and RedHat
    ansible.builtin.include_role:
      name: myrole.nmcli
    when: ansible_facts.distribution in fedora_os

  - name: Include role in Ubuntu
    ansible.builtin.include_role:
      name: myrole.netplan
    when: ansible_facts.distribution == "Ubuntu" 

ansible-playbook 디렉토리 구조

main.yml : 프로젝트의 최상단

/roles : 프로젝트 내 수행할 작업에 대한 sub 디렉토리

ㄴ /role_name1 : 하위 role의 이름

    ㄴ /tasks : role 안에서 수행할 task들이 위치한 디렉토리

        ㄴ main.yml : tasks 디렉토리 밑의 파일은 기본적으로 main.yml을 우선 참조한다.

        ㄴ sub_task1.yml

        ㄴ ...

    ㄴ /vars : role에서 참조할 변수들을 작성하는 디렉토리

    ㄴ /files : role에서 참조할 기타 파일들이 위치한 디렉토리

    ㄴ /handler : task 수행 후 별도로 실행해야 하는 사항을 작성하는 디렉토리. task에서 notify로 호출

/vars : 프로젝트 전체에서 사용하는 변수. ansible-playbook에서 실행하는 경우 extra_vars로, AWX에서 실행하는 경우 variable 항목에서 지정 가능

하위 태스크를 호출하는 방법

  1. include 모듈을 사용하여 호출: main playbook에서 하위 role 호출 시 include_roles을 사용
  2. 또는 role의 main.yml에서 하위 task를 호출할 때 include_tasks를 사용
  3. 또는 task 안에서 변수를 호출할 때 include_vars 사용

- name: execute test01
  include_role:
    name: varable_test

- name: Call task01
  include_tasks: sub_task01.yml

- name: set variables
  include_vars: vars/variable.yml
@sigridjineth
Copy link
Author

ChatGPT와의 대화
Nix - ansible 비교
https://chat.openai.com/share/af616f00-1015-4ac3-a1b9-3f72fc7d4c21

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment