29 Kasım 2020 Pazar

Linux ve Google Chrome yerel sertifikaları eklemek

 Öncelikle linux sistemimize yerel ca sertifikalarını eklemek için;

RHEL tabanlı bir sistem kullanıyorsanız;

yerel sertifikayı;

/etc/pki/ca-trust/source/anchors/

dizinine kopyaladıktan sonra;

# update-ca-trust enable

# update-ca-trust extract

Komutlarını çalıştırmanız yeterli olur.


Şayet farklı bir dağıtım kullanıyorsanız ve updat-ca-trust mevcut değilse,

sertifikanızı /etc/pki/tls/certs dizinine kopyalayabilirsiniz.


Google chrome için nssdb ca yı eklemeniz yeterli olur,
Eklemek için;

certutil  -d sql://home/remzi/.pki/nssdb/ -A -t "C,,," -n sat02.ipa.istpazdemo.yerel -i /tmp/katello-server-ca.crt

sonrasında kontrol için ;

$ certutil  -d sql://home/remzi/.pki/nssdb/ -L

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

sat68m1.istpaz.yerel                                         C,,  
sat68m1.istpaz.local - Katello                               CT,C,C
Red Hat Candlepin Authority - Red Hat, Inc.                  CT,C,C
idm01.ipa.istpazdemo.yerel                                   C,,  
local.repo.home                                              Cu,u,u
sat01.ipa.istpazdemo.yerel                                   C,,  
sat01.ipa.istpazdemo.yerel - Katello                         CT,c,c
sat02.ipa.istpazdemo.yerel                                   C,,  
sat02.ipa.istpazdemo.yerel - Katello                         C,,  
[remzi@seyyah-usb ~]$ 

Dizinleri ve dosya isimlerini kendi sisteminize göre değiştirmeniz gerekiyor.

Linux ve Google Chrome yerel sertifikaları eklemek

 Öncelikle linux sistemimize yerel ca sertifikalarını eklemek için;

RHEL tabanlı bir sistem kullanıyorsanız;

yerel sertifikayı;

/etc/pki/ca-trust/source/anchors/

dizinine kopyaladıktan sonra;

# update-ca-trust enable

# update-ca-trust extract

Komutlarını çalıştırmanız yeterli olur.


Şayet farklı bir dağıtım kullanıyorsanız ve updat-ca-trust mevcut değilse,

sertifikanızı /etc/pki/tls/certs dizinine kopyalayabilirsiniz.


Google chrome için nssdb ca yı eklemeniz yeterli olur,
Eklemek için;

certutil  -d sql://home/remzi/.pki/nssdb/ -A -t "C,,," -n sat02.ipa.istpazdemo.yerel -i /tmp/katello-server-ca.crt

sonrasında kontrol için ;

$ certutil  -d sql://home/remzi/.pki/nssdb/ -L

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

sat68m1.istpaz.yerel                                         C,,  
sat68m1.istpaz.local - Katello                               CT,C,C
Red Hat Candlepin Authority - Red Hat, Inc.                  CT,C,C
idm01.ipa.istpazdemo.yerel                                   C,,  
local.repo.home                                              Cu,u,u
sat01.ipa.istpazdemo.yerel                                   C,,  
sat01.ipa.istpazdemo.yerel - Katello                         CT,c,c
sat02.ipa.istpazdemo.yerel                                   C,,  
sat02.ipa.istpazdemo.yerel - Katello                         C,,  
[remzi@seyyah-usb ~]$ 

Dizinleri ve dosya isimlerini kendi sisteminize göre değiştirmeniz gerekiyor.

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 

                        







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

sudo_user      = root

ask_sudo_pass = True

ask_pass      = false

callback_whitelist=cgroup_perf_recap,timer,profile_tasks,profile_roles

[callback_cgroup_perf_recap]

control_group=ansible_profile

[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 -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 

                        







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:





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:





Ansible automation platform kurarken dikkat edilmesi gereken noktalar

 1. iç ortamamınızda kullanılacak aap için yerel sertifikalar üretilmeli. Aşağıdaki script kullanılabilir. https://github.com/linuxliste/ara...