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'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
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
Yorum Gönder