Ana içeriğe atla

ansible notları

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

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

callback_whitelist=cgroup_perf_recap,timer,profile_tasks,profile_roles,yaml

[callback_cgroup_perf_recap]

control_group=ansible_profile


###strategy                = linear
stdout_callback        = yaml

[privelege_escalation]

become = true

become_method = sudo

become_user = root

become_ask_pass = false

[ssh_connection]

#control_path = %(directory)s/%%h-%%r-%%p

ssh_args = -o ControlMaster=auto  -O ControlPersist=600s


Ansible ayar dosyasından bahsetmişken, sistemdeki ansible ayar dosyalarının önceliklerini atlamamak gerekiyor.

1. ANSIBLE_CONFIG

    çevre değişkeni olarak ANSIBLE_CONFIG tanımlandıysa, ansible ayar dosyası olarak, bu değişkeni kullanır.

   ANSIBLE_CONFIG=/labs/ansible/ansible.cfg

şeklinde tanım yaptıysak, ansible ayar dosyası olarak; /labs/ansible/ansible.cfg kullanır.


2. ./ansible.cfg

    ANSIBLE_CONFIG tanımle değilse, ansible komutu bulunduğu dizinde ansible.cfg dosyasını arar. Mevcut ise ayar dosyası olarak kullanır.

 

3. $HOME/.ansible.cfg

     Ansible, ANSIBLE_CONFIG ve bulunduğu dizinde ansible.cfg yoksa, kullanıcının ev dizini altında .ansible.cfg dosyasını arar, bulursa kullanır.


4. /etc/ansible/ansible.cfg

    Yukarıdaki üç durumda mevcut değilse, ansible /etc/ansible/ansible.cfg dosyasını ayar dosyası olarak kullanır.



$ 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 dosyası 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 (  yeni dosya olusturulur )

ansible-vault rekey kullanici-bilgileri.yml  ( dosyanin parolasini degistiri )

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 

Sorun oldugunda ansible yapilandirma ayarlarimizi kontrol etmek icin,
 
ansible-config dump komutundan faydalanabiliriz.
 
                        
 
ansible ile kullanıcı oluşturulması;

$> ansible all -m user -a "name='remzi' uid=32768 groups='wheel' password={{ 'degistirbeni' | password_hash('sha512','gizzzlitussszzzz') }} generate_ssh_key=yes" --user=root 

Tum sunucularimizda ayni kullanici id ile remzi kullanicisi olusur.
parola=degistirbeni
salt=gizzzlitussszzzz 
salt parola hash olusturulurken kullanilir. rastgele birseyde verebilirsiniz.



selinux aktif sunucumuzda web dizinin selinuz etiketinin duzenlenmesi:

ansible localhost -m file -a " path=/var/www recurse=true setype=httpd_sys_content_t" -b



ansible ile birden fazla rpm reposunun sisteme eklenmesi:





Yorumlar

Bu blogdaki popüler yayınlar

ttnet tilgin hg1332 modem(router) kablosuz özelliğini güçlendirmek

Bu gün ttnetin hediyesi olan tilgin yönlendiriciyle biraz oynayayım dedim Matkap, ve rg316-rp-sma kablo alıp cihazın kapağını tekrar açtım. Matkapla usb çıkışın yanına bir delik açarak kaployu taktım. Sonra elimdeki antenlerden ikiti tanesini takıp test ettim. . Bu iki antenin, gözle farkedilir derecede sinyalleri kuvvetlendirdiğini fark ettim.. Normalde bu cihaz ile evin iki en uc noktaları arasında haberleşme olmaz iken şimdi en kör iki uç arasında sorun olmadan kablosuz kullanılabildiğini gördüm. Arada 4 tane kuvvetli beton duvar mevcut. Deneme bitti, tilgin rafa kalktı yine. Her nekadar ben bu cihazı kaldırsamda, kullanmak zorunda olan arkadaşlar, bir kablo ve ikitane anten takarak her herde kullanabilirler. İyi eğlenceler.

yerel ssl ca sertifikasını güvenli sertifika olarak kabul etmek. (özet tekrar)

  openssl s_client  -connect akyuz.tech:443 -showcerts > /tmp/akyuz.tech.cacrt keytool -import -alias akyuz.tech  -keystore  /etc/pki/ca-trust/extracted/java/cacerts -file /tmp/akyuz.tech.cacrt /etc/pki/ca-trust/extracted/java/cacerts dosyası varsayılan java için varsayılan ca cert dosyasıdır.   cp -iv /tmp/akyuz.tech.cacrt /etc/pki/ca-trust/source/anchors/ update-ca-trust     DOMAIN=akyuz.tech openssl s_client -showcerts -connect ${DOMAIN}:443 </dev/null | sed -n -e '/BEGIN\ CERTIFICATE/,/END\ CERTIFICATE/ p' > ${DOMAIN}.cert