Ansible, Alibaba Cloud Compute Services (Alicloud) üzerinde kontrol ve yönetim sağlamak için bir dizi modül içermektedir. Bu rehber, Alicloud Ansible modüllerini nasıl kullanacağınızı açıklamaya çalışacağım.
Tüm Alicloud modülleri footmark python modülüne ihtiyaç duymakta, bu yüzden önce bu paketi kuralım.
pip install footmark
BashAlicloud modülleri, yerel makinenizde (kontrol makinesi) çalışır ve connection: local
ile uzak makineler yerine tanımlanır.
Kimlik Doğrulama
Alicloud kimlik doğrulama bilgilerinizi (erişim anahtarı ve gizli anahtar) çevresel değişkenler olarak iletebilir veya bunları bir vars dosyasında saklayabilirsiniz.
Kimlik bilgilerini değişken olarak tanımlamak için aşağıdaki alanları kendinize göre düzenlerek komutları çalıştırın.
export ALICLOUD_ACCESS_KEY='ACCESSKEY'
export ALICLOUD_SECRET_KEY='SECRETKEY'
BashKimlik bilgilerini vars_files içinde saklamayı düşünürseniz, bunları Ansible Vault ile şifrelerseniz şu şekilde görünür:
---
alicloud_access_key: "--REMOVED--"
alicloud_secret_key: "--REMOVED--"
YAMLAccess ve secret keyleri bir vars_files içinde saklarsanız, her Alicloud modülünde onları aşağıdaki şekilde çağırmanız gerekecektir.
- ali_instance:
alicloud_access_key: "{{alicloud_access_key}}"
alicloud_secret_key: "{{alicloud_secret_key}}"
image_id: "..."
YAMLInstance oluşturma
Alicloud modülleri, Alicloud ECS instanceları, diskler, sanal özel ağlar, sanal anahtarlar, güvenlik grupları ve diğer kaynakları oluşturur.
count
parametresini kullanarak oluşturulan veya sonlandırılan kaynakların sayısını kontrol edebilirsiniz. Örneğin, tam olarak 5 adet NewECS etiketli instance istiyorsanız, instance sayısını 5 ve count_tag’ı NewECS olarak ayarlayın. Eğer NewECS etiketine sahip instance yoksa, görev 5 yeni instance oluşturur. Eğer bu etikete sahip 2 instance varsa, görev 3 daha fazla oluşturur. Eğer bu etikete sahip 8 instance varsa, task bu instancelardan 3 tanesini rastgele olarak siler.
Eğer bir count_tag
belirtmezseniz, task count ile belirttiğiniz sayıda instance_name
ile instance oluşturur.
# alicloud_setup.yml
- hosts: localhost
connection: local
tasks:
- name: Create VPC
ali_vpc:
cidr_block: '{{ cidr_block }}'
vpc_name: new_vpc
register: created_vpc
- name: Create VSwitch
ali_vswitch:
alicloud_zone: '{{ alicloud_zone }}'
cidr_block: '{{ vsw_cidr }}'
vswitch_name: new_vswitch
vpc_id: '{{ created_vpc.vpc.id }}'
register: created_vsw
- name: Create security group
ali_security_group:
name: new_group
vpc_id: '{{ created_vpc.vpc.id }}'
rules:
- proto: tcp
port_range: 22/22
cidr_ip: 0.0.0.0/0
priority: 1
rules_egress:
- proto: tcp
port_range: 80/80
cidr_ip: 192.168.0.54/32
priority: 1
register: created_group
- name: Create a set of instances
ali_instance:
security_groups: '{{ created_group.group_id }}'
instance_type: ecs.n4.small
image_id: "{{ ami_id }}"
instance_name: "My-new-instance"
instance_tags:
Name: NewECS
Version: 0.0.1
count: 5
count_tag:
Name: NewECS
allocate_public_ip: true
max_bandwidth_out: 50
vswitch_id: '{{ created_vsw.vswitch.id}}'
register: create_instance
YAMLYukarıdaki örnek playbook’ta, bu playbook tarafından oluşturulan vpc, vswitch, grup ve örneklerle ilgili veriler, her görevde “register” anahtar kelimesi tarafından tanımlanan değişkenlere kaydedilir.
Her Alicloud modülü, çeşitli parametre seçenekleri sunar. Tüm seçenekler yukarıdaki örnekte gösterilmemiştir. Daha fazla ayrıntı ve örnekler için her bir modülü inceleyin.