28 Kasım 2020 Cumartesi

ansible notları

Ansible ile ilgili notlarımı buradan paylaşayım dedim;

ansible-navigator.yml dosyasının sıfırdan hazırlanması

standart registry.redhat.io erişimimiz yok veya kendi local registry kullanılacaksa, podman ile local registry erişebilir ve image alabilir olmamız gerekiyor. 

Aşağıda yerel registry den image indirerek kullanıyoruz.

[admin@ex374admin ~]$  podman pull bastion.local.lab/ee-supported-rhel8:1.0.0-1032

Trying to pull bastion.local.lab/ee-supported-rhel8:1.0.0-1032...

Getting image source signatures

Copying blob ad56673d0d64 skipped: already exists  

Copying blob 14d7381be522 skipped: already exists  

Copying blob 2b0d9b10e004 skipped: already exists  

Copying blob 9d6f73e45974 skipped: already exists  

Copying config 48ced021b0 done   | 

Writing manifest to image destination

48ced021b0e1c0abc9c57faadb4bc860d21661e321302bc1d97e883540a03fc9

[admin@ex374admin ~]$ podman images

REPOSITORY                            TAG         IMAGE ID      CREATED      SIZE

bastion.local.lab/ee-supported-rhel8  1.0.0-1032  48ced021b0e1  3 weeks ago  2.28 GB

[admin@ex374admin ~]$ 

Bundan sonra ee olarak  bastion.local.lab/ee-supported-rhel8:1.0.0-1032 kullanılacaktır.

# ansible-navigator  settings --effective --pp missing --eei bastion.local.lab/ee-supported-rhel8:1.0.0-1032 > /tmp/ansible-navigator.yml

# mv /tmp/ansible-navigator.yml ~/.ansible-navigator.yml


[admin@ex374admin ~]$ head  ~/.ansible-navigator.yml 

---

ansible-navigator:

  ansible:

    config:

      help: false

    doc:

      help: false

      plugin:

        type: module

    inventory:

[admin@ex374admin ~]$ 

Varsayılan değerlerle oluşturulum, ee hariç, ansible-navigator ayar dosyası hazırdır. 
Bu dosyayı ihtiyaçlarımıza göre elle düzenleyebiliriz.

RHEL 9 ansible notları;

# dnf install ansible-navigator

# execution environment yüklenmesi

# https://catalog.redhat.com/search?gs&q=ee-supported&searchType=all
# podman pull registry.redhat.io/ansible-automation-platform-24/ee-supported-rhel8:latest

# podman pull registry.redhat.io/ansible-automation-platform-24/ee-supported-rhel9:latest

# ansible-navigator images

ansible-playbook  ihtiyacımız varsa, ansible-core paketini kurmamız gerekmektedir.


RHEL 8 ansible yüklenmesi;


# yum list installed platform-python

# subscription-manager repos --enable ansible-2-for-rhel-8-x86_64-rpms

# yum module install python36

# yum install ansible

# yum install python3-libselinux


Ansible sürüm bilgisi;

$ ansible --version

ansible 2.9.16

config file = /home/admin/ansible/ansible.cfg

 configured module search path = ['/home/admin/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']

  ansible python module location = /usr/lib/python3.6/site-packages/ansible

  executable location = /usr/bin/ansible

  python version = 3.6.8 (default, Aug 18 2020, 08:33:21) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]

ansible varsayılan olarak öncelikle bulunduğunuz dizinde ansible.cfg dosyasını arar. Şayet bulunduğumuz dizinde ansible.cfg bulunmaz ise, /etc/ansible/ansible.cfg dosyası aranır.

Örnek ansible.cfg dosyası

$ cat ansible.cfg 

[defaults]

inventory=./inventory

forks          = 4

poll_interval  = 10

remote_user    = admin

sudo_user      = root

ask_sudo_pass = True

ask_pass      = false


[privelege_escalation]

become = true

become_method = sudo

become_user = root

become_ask_pass = false


$ ansible -m setup localhost |grep ansible_python_version

invertory örneği;

[webservers]

web1.tazzz.lan

web2.tazzz.lan

web[3:9].tazzz.lan


[mysqlservers]

mysql1.tazzz.lan

mysql2.tazzz.lan

mysql3.tazzz.lan

mysql[10:13].tazzz.lan


[prod:children]

webservers

mysqlservers


inventory dosyasındaki all ve ungrouped isimli iki group daima vardır.

all tüm hostları, ungrouped  her hangi bir grupta olmayan hostları içerir.


Ansible varsayılan ayar dosyasını değiştirmek;

ANSIBLE_CONFIG=/home/remzi/.my-ansible.cfg

**************.my-ansible.cfg******************

[defaults]

inventory = ./inventory

remote_user = someuser

ask_pass = false


[privilege_escalation]

become = true

become_method = sudo

become_user = root

become_ask_pass = false

**************.my-ansible.cfg******************


inventory dosyalsı ini veya yaml formantında olabilir. 

inventory dosyasına örnek:

1. ini static file

[websrv]

web1.local.lan

web2.local.lan

[dbsrv]

db1.local.lan

db2.local.lan

[lbsrv]

lb[1:2].local.lan


2. yaml  static inventory örnek:

lbsrv:

    hosts:

        lb1.local.lan

        lb2.local.lan

websrv:

    hosts:

        web[1:5].local.lan

            web1 den web5 kadar sunuculari kapsar

web:

    children:

        - lbsrv    

        - websrv


    

# ansible all -m ping

-------------------------------------------------------------------------------------------------------------------------------

$ sudo -l -U remzi

Matching Defaults entries for remzi on seyyah-usb:

    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE

    LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",

    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/var/lib/snapd/snap/bin


User remzi may run the following commands on seyyah-usb:

    (ALL) NOPASSWD: ALL

-------------------------------------------------------------------------------------------------------------------------------

ansible playbook çalıştırmadan yazım kontrolü,

ansible-playbook --syntax-check db12prepare.yml

Çalışma simülasyonu;

ansible-playbook -C db12prepare.yml



ansible'da değişkenler tanımlarken '.' (nokta), boşluk kullanılmamalı.

ansible değişkenlerine örnek;

hosts

hosts-center

host1

host-centor1

host1-center_2


Belli başlı ansible değişken tipleri;

1. Genel değişkenler

2. playbook içindeki değişkenler

3. host özelliklerinden gelen değişkenler


Gizlilik(kullanıcı parolası vs. gibi)  taşıyan bilgilerin ansible vault ile güvende tutulması;

ansible-vault create kullanici-bilgileri.yml

ansible-vault view kullanici-bilgileri.yml

ansible-vault decrypt kullanici-bilgileri.yml --output=kullanici-bilgileri.txt



ansible-vault ile birden fazla dosya üzerinde işlem yapılabiliyor.
Detaylı bilgi için her zaman olduğu gibi; # man ansible-vault 

                        







Hiç yorum yok:

Yorum Gönder

🚴 Yeni Başlayanlar İçin Elektrikli Bisiklet Yapım Kılavuzu (2025) - Beginner’s Guide to Building an Electric Bike (2025) 🚴

🚴 Yeni Başlayanlar İçin Elektrikli Bisiklet Yapım Kılavuzu (2025) 🚴 Yeni Başlayanlar İçin Elektrikl...