Infra/Ansible

Ansible - Playbook Roles 작성

wave35 2023. 3. 27. 06:51

 

[ roles init ]

roles directory 생성

$ mkdir roles
$ cd rolse

$ ansible-galaxy init common
$ tree common
├── README.md
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml

 

 

[ roles/common/vars/main.yml ]

미리 변수를 정의하여 tasks에서 사용

name: my-host

 

 

[ roles/common/templates/host.my-host.j2 ]

tasks에서 사용할 template정의

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.10 main_server
192.168.1.11 storage_server

 

 

[ roles/common/tasks/main.yml ]

실제 동작하는 tasks 작성

- name: Install packages
  yum:
    name:
      - wget
      - unzip
  become: true

- name: modify hosts
  template:
    src: ../templates/hosts.{{name}}.j2
    dest: /etc/hosts
    owner: root
    group: root

 

 

[ common.yml ]

최초 실행 playbook 

- hosts: '{{ target }}'
  roles:
    - common

 

 

[ playbook 실행 ]

$ ansible-playbook common.yml --extra-vars "target=my-host" --user=my