on
OpenStack
- Get link
- Other Apps
Inventory là nơi lưu trữ thông tin các đối tượng remote server với các khái niệm trong Ansible như Host, Group.
Mỗi host một dòng và tất cả host nằm trong all group
Đơn giản nhất, nếu các server này đã được copy ssh key và có sự tác động giống nhau:
192.168.122.103
192.168.122.12
Nhiều host một dòng và tất cả host nằm trong all group
Tương tự như trên nhưng nếu các IP liên tục thì có thể sử dụng nhu bên dưới.
192.168.122.[12:103]
Còn đây là cấu hình cơ bản nhất với nhiều group để phần nhóm các loại servers
Cấu hình ra nhiều group sẽ rất tiện dụng khi play 01 tác động vào group1 và play 02 lại chỉ tác động vào group2. Trong khi đó cả 2 play đều được viết vào playbook.yml
[group1]
192.168.122.103 ansible_user=stack extend_variable='group1
192.168.122.104 ansible_user=stack extend_variable='group1'
[group2]
192.168.122.12 ansible_user=stack extend_variable='group2
192.168.122.13 ansible_user=stack extend_variable='group2'
Hỗn hợp 03 loại cấu hình inventory trên
192.168.122.103 ansible_user=stack
192.168.122.12 ansible_user=stack
[group1]
192.168.122.104 ansible_user=stack
[group2]
192.168.122.13 ansible_user=stack
[other]
192.168.122.[12:15]
Cấu hình biến chung cho các host trong group
Các biến chung của các host cùng group có thể được cấu hình riêng ra một chỗ, giúp chúng ta dễ dàng hơn trong quản lý inventory.
Chỗ này dễ cực, thêm mỗi :vars vào sau thêm group và để riêng ra 1 chỗ
[group1:vars]
ansible_user=stack
[group1]
192.168.122.103
192.168.122.104
[group2:vars]
ansible_user=stack
[group2]
192.168.122.12
192.168.122.13
Cấu hình group của group
Có một số tác động sẽ cần thực hiện chung ở cả group1 và group2, một số lại riêng. Vậy là chúng ta có khái niệm group con để bổ trợ cho việc này, các host thuộc group cha sẽ tự động là thành viên của group con (group con to hơn group cha, con hơn cha là nhà có phúc ^^)
Chỗ này cũng đơn giản không kém, thêm :children vào sau tên group khi nó là tổ hợp từ các group khác
[group1]
192.168.122.103 ansible_user=stack
192.168.122.12 ansible_user=stack
[group2]
192.168.122.13 ansible_user=stack
[twogroup:children]
group1
group2
Dưới đây là một đoạn file inventory mà hình vẫn thường dùng để triển khai OpenStack ^^
[all:vars]
ansible_connection=ssh
ansible_ssh_port=22
ansible_ssh_user=monitor
ansible_ssh_pass=Monitor@123
ansible_become_pass=Administrator@123
ansible_become=true
ansible_become_method=su
[normal-compute:vars]
nova_libvirt_cpu_mode=custom
nova_cpu_model=Broadwell
[highper-compute:vars]
nova_libvirt_cpu_mode=custom
nova_cpu_model=Skylake-Server
[controller]
10.1.2.2
10.1.2.3
10.1.2.4 ansible_ssh_pass="DifferentPass@123#"
[normal-compute]
10.1.2.5
10.1.2.6
10.1.2.7
[highper-compute]
10.1.2.8
10.1.2.9
10.1.2.10
[compute:children]
normal-compute
highper-compute
Note:
Ok. STOP, mình nghĩ Ansible inventory thế này là đủ cho hầu hết các trường hợp cơ bản, bạn có thể dành thời gian luyện tập sử dụng các module hay thi triển các chiêu thức mới của Ansible cho đỡ chán trước đã ^^
Appendix
Bao giờ rảnh và tò mò thêm về inventory, các bạn có thể tìm hiểu thêm ở đây: https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html
Đại khái là ngoài định dạng INI:
Comments
Post a Comment