Ana içeriğe geç

Ansible

Nedir?

  • Ansible, bilgisayarları yapılandırmak ve yönetmek için kullanılan bir özgür yazılım platformudur
  • Ansible ile karşı sunucuya extra müdahale gerçekleştirilmeden SSH ile yönetim sağlıyabilirsiniz
  • Ansible, Open Source bir otomasyon sistemidir. Herkes tarafından ticari bir şekilde de kullanılabilir

Centos 8.2 ile Ubuntu 20.04 yönetilmesi

Gereklilikler ve uygulama

Kurulum: Centos 8.2 üzerindeki işlemler

  • Sistem güncelleştirilmesi
yum -y update
  • repo indirilmesi
yum -y install epel-release
  • Ansible indiriliyor
yum -y install ansible
  • Ansible kontrol
ansible --version
  • Ansiblenin hosts dosyasına giriyoruz
  • Kontrol edeceğimiz makineleri buraya eklememiz gerekiyor
nano /etc/ansible/hosts
  • en alta inin ve şunu ekleyin:
  • linux makineye verdiğim ad
  • 192.168.17.135 ise ubuntu 20.04 makinemin ip adresi (ifconfig)
[linux]
192.168.17.135
  • SSH key oluşturuyoruz
  • soru soracaktır entere basın hepsinde
ssh-keygen
  • keyimizi ubuntu sunucusuna iletmemiz gerek
  • root kullanıcısına bağlanıyor
  • IP adresi ubuntu sunucunun IP adresi
  • Size şifre soracaktır burada root kullanıcısının şifresini girmelisiniz
ssh-copy-id [email protected]

Bağlantı testi

  • ubuntu sunucusuna ping atalım
ansible all -m ping
  • çıktı şöyle olmalıdır:
192.168.17.135 | SUCCESS => {
    "ansible_facts": {
         "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

ansiblelogo

Ubuntu 18.04 ile Windows Server 2016 yönetimi

Gereklilikler ve uygulama

  • Ubuntu 18.04 TLS ve Windows Server 2016
  • Ansible Linux sunucuları ssh ile Windows sunucuları da WinRM kullanarak yönetir
  • WinRM Vista/Server 2008 ve sonrası için adminlere uzaktan script çalıştırmamızı sağlayan özelliktir

Kurulum: Ubuntu 18.04 üzerinde yapılacaklar

  • Güncelleştirmeler
apt-get update && apt-get upgrade
  • ansible indiriliyor
apt install ansible
  • pip indiriliyor
apt install python-pip
  • pywinrm indiriliyor
pip install "pywinrm>=0.3.0"
  • yönetim için hosts dosyasına bilgiler ekleniyor
nano /etc/ansibe/hosts
  • aşağıdakini dosyanın içerisine yapıştırınız
  • 192.168.127.140 windows serverin IP adresi olarak ayarlanmalıdır
  • ansible_user windows oturum açma kullanıcı adınız olarak ayarlanmalıdır
  • ansible_password windows oturum açma şifreniz olarak ayarlanmalıdır
[windows]

192.168.127.140

[windows:vars]

ansible_user= administrator
ansible_password= password
ansible_connection= winrm
ansible_winrm_server_cert_validation=ignore

Windows üzerinde yapılacak işlemler

  • Arama kısmına powershell yazın sağ tıklayıp yönetici olarak açın ve aşağıdaki komutları sırasıyla girin

  • Komut 1

$url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"
  • Komut 2
$file = "$env:tmp\ConfigureRemotingForansible.ps1"
  • Komut 3
(New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
  • Komut 4
powershell.exe -ExecutionPolicy ByPass -File $file

Bağlantı testi

  • Ubuntu sunucusu üzerinden aşağıdaki komutu girelim
ansible windows -m win_ping
  • Çıktı şöyle olmalıdır:
192.168.127.137 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
  • Örnek olarak sistem bilgilerini çekelim
ansible windows -m setup
  • Çıktı:
192.168.127.137 | SUCCESS => {
    "ansible_facts": {
        "ansible_architecture": "64-bit", 
        "ansible_bios_date": "05.19.2017", 
        "ansible_bios_version": "6.00", 
        "ansible_date_time": {
            "date": "2020-08-22", 
            "day": "22", 
            "epoch": "1598108790,12703", 
            "hour": "15", 
            "iso8601": "2020-08-22T12:06:30Z", 
            "iso8601_basic": "20200822T150630117375", 
            "iso8601_basic_short": "20200822T150630", 
            "iso8601_micro": "2020-08-22T12:06:30.117375Z", 
            "minute": "06", 
            "month": "08", 
            "second": "30", 
            "time": "15:06:30", 
            "tz": "Turkey Standard Time", 
            "tz_offset": "+03:00", 
            "weekday": "Saturday", 
            "weekday_number": "6", 
            "weeknumber": "33", 
            "year": "2020"
        }, 
        "ansible_distribution": "Microsoft Windows Server 2016 Datacenter Evaluation", 
        "ansible_distribution_major_version": "10", 
        "ansible_distribution_version": "10.0.14393.0", 
        "ansible_domain": "", 
        "ansible_env": {
            "ALLUSERSPROFILE": "C:\\ProgramData", 
            "APPDATA": "C:\\Users\\Administrator\\AppData\\Roaming", 
            "COMPUTERNAME": "WIN-KGA0QIDD3AG", 
            "ComSpec": "C:\\Windows\\system32\\cmd.exe", 
            "CommonProgramFiles": "C:\\Program Files\\Common Files", 
            "CommonProgramFiles(x86)": "C:\\Program Files (x86)\\Common Files", 
            "CommonProgramW6432": "C:\\Program Files\\Common Files", 
            "HOMEDRIVE": "C:", 
            "HOMEPATH": "\\Users\\Administrator", 
            "LOCALAPPDATA": "C:\\Users\\Administrator\\AppData\\Local", 
            "LOGONSERVER": "\\\\WIN-KGA0QIDD3AG", 
            "NUMBER_OF_PROCESSORS": "2", 
            "OS": "Windows_NT", 
            "PATHEXT": ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL", 
            "PROCESSOR_ARCHITECTURE": "AMD64", 
            "PROCESSOR_IDENTIFIER": "Intel64 Family 6 Model 158 Stepping 10, GenuineIntel", 
            "PROCESSOR_LEVEL": "6", 
            "PROCESSOR_REVISION": "9e0a", 
            "PROMPT": "$P$G", 
            "PSExecutionPolicyPreference": "Unrestricted", 
            "PSModulePath": "C:\\Users\\Administrator\\Documents\\WindowsPowerShell\\Modules;C:\\Program Files\\WindowsPowerShell\\Modules;C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules", 
            "PUBLIC": "C:\\Users\\Public", 
            "Path": "C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\WindowsApps", 
            "ProgramData": "C:\\ProgramData", 
            "ProgramFiles": "C:\\Program Files", 
            "ProgramFiles(x86)": "C:\\Program Files (x86)", 
            "ProgramW6432": "C:\\Program Files", 
            "SystemDrive": "C:", 
            "SystemRoot": "C:\\Windows", 
            "TEMP": "C:\\Users\\ADMINI~1\\AppData\\Local\\Temp", 
            "TMP": "C:\\Users\\ADMINI~1\\AppData\\Local\\Temp", 
            "USERDOMAIN": "WIN-KGA0QIDD3AG", 
            "USERDOMAIN_ROAMINGPROFILE": "WIN-KGA0QIDD3AG", 
            "USERNAME": "Administrator", 
            "USERPROFILE": "C:\\Users\\Administrator", 
            "windir": "C:\\Windows"
        }, 
        "ansible_fqdn": "WIN-KGA0QIDD3AG.", 
        "ansible_hostname": "WIN-KGA0QIDD3AG", 
        "ansible_interfaces": [
            {
                "connection_name": "Ethernet0", 
                "default_gateway": "192.168.127.2", 
                "dns_domain": "localdomain", 
                "interface_index": 2, 
                "interface_name": "Intel(R) 82574L Gigabit Network Connection", 
                "macaddress": "00:0C:29:92:15:6A"
            }
        ], 
        "ansible_ip_addresses": [
            "192.168.127.137", 
            "fe80::94e:c7be:48ae:94e8"
        ], 
        "ansible_kernel": "10.0.14393.0", 
        "ansible_lastboot": "2020-08-22 11:38:42Z", 
        "ansible_machine_id": "S-1-5-21-2153509936-3144233801-3660598586", 
        "ansible_memtotal_mb": 2047, 
        "ansible_nodename": "WIN-KGA0QIDD3AG.", 
        "ansible_os_family": "Windows", 
        "ansible_os_name": "Microsoft Windows Server 2016 Datacenter Evaluation", 
        "ansible_owner_contact": "", 
        "ansible_owner_name": "Windows User", 
        "ansible_powershell_version": 5, 
        "ansible_processor": [], 
        "ansible_processor_cores": 1, 
        "ansible_processor_count": 2, 
        "ansible_processor_threads_per_core": 0.5, 
        "ansible_processor_vcpus": 0.5, 
        "ansible_product_name": "VMware Virtual Platform", 
        "ansible_product_serial": "VMware-56 4d cc ff a7 77 20 ce-e6 4c 44 29 4b 92 15 6a", 
        "ansible_reboot_pending": true, 
        "ansible_swaptotal_mb": 0, 
        "ansible_system": "Win32NT", 
        "ansible_system_description": "", 
        "ansible_system_vendor": "VMware, Inc.", 
        "ansible_uptime_seconds": 12471, 
        "ansible_user_dir": "C:\\Users\\Administrator", 
        "ansible_user_gecos": "", 
        "ansible_user_id": "Administrator", 
        "ansible_user_sid": "S-1-5-21-2153509936-3144233801-3660598586-500", 
        "ansible_win_rm_certificate_expires": "2023-08-21 17:18:54", 
        "ansible_windows_domain": "WORKGROUP", 
        "ansible_windows_domain_member": false, 
        "ansible_windows_domain_role": "Stand-alone server", 
        "gather_subset": [
            "all"
        ], 
        "module_setup": true
    }, 
    "changed": false
}
  • YAPILANDIRMA BAŞARILI.

ansiblelogo

Ubuntu 20.04 ile Windows Server 2016 yönetimi

Gereklilikler ve uygulama

  • Ubuntu 20.04 TLS
  • Windows Server 2016
  • Ubuntu 18.04 ve Ubuntu 20.04 arasındaki farklılık Ubuntu 20.04'de işlemin Python3 üzerinden yapılmasıdır

Kurulum: Ubuntu 20.04 üzerinde yapılacaklar

  • Güncelleştirmeler
apt-get update && apt-get upgrade
  • ansible indiriliyor
apt install ansible
  • pip3 indiriliyor
apt install python3-pip
  • pip3 ile pywinrm indiriyoruz
pip3 install "pywinrm>=0.3.0"
  • yönetim için hosts dosyasına bilgiler ekleniyor
nano /etc/ansibe/hosts
  • aşağıdakini dosyanın içerisine yapıştırınız
  • 192.168.127.140 windows serverin IP adresi olarak ayarlanmalıdır
  • ansible_user windows oturum açma kullanıcı adınız olarak ayarlanmalıdır
  • ansible_password windows oturum açma şifreniz olarak ayarlanmalıdır
[windows]

192.168.127.140

[windows:vars]

ansible_user= administrator
ansible_password= password
ansible_connection= winrm
ansible_winrm_server_cert_validation=ignore

Windows üzerinde yapılacak işlemler

  • Arama kısmına powershell yazın sağ tıklayıp yönetici olarak açın ve aşağıdaki komutları sırasıyla girin

  • Komut 1

$url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"
  • Komut 2
$file = "$env:tmp\ConfigureRemotingForansible.ps1"
  • Komut 3
(New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
  • Komut 4
powershell.exe -ExecutionPolicy ByPass -File $file

Bağlantı testi

  • Ubuntu sunucusu üzerinden aşağıdaki komutu girelim
ansible windows -m win_ping
  • Çıktı şöyle olmalıdır:
192.168.127.137 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
  • YAPILANDIRMA BAŞARILI

ansiblelogo

Centos 8.2 ile Windows Server 2016 yönetimi

Gereklilikler ve uygulama

  • Centos 8.2
  • Windows Server 2016

Kurulum: Centos 8.2 üzerindeki işlemler

  • Sistem güncelleştirilmesi
yum -y update
  • repo indirilmesi
yum -y install epel-release
  • nano editörü indiriliyor
yum install nano
  • python3 indiriliyor
yum install python3
  • pip3 indiriliyor
yum install python3-pip
  • pywinrm indiriliyor
pip3 install pywinrm
  • Ansible indiriliyor
yum -y install ansible
  • Ansible kontrol
ansible --version
  • Ansiblenin hosts dosyasına giriyoruz
  • Kontrol edeceğimiz makineleri buraya eklememiz gerekiyor
nano /etc/ansible/hosts
  • yönetim için hosts dosyasına bilgiler ekleniyor
nano /etc/ansibe/hosts
  • aşağıdakini dosyanın içerisine yapıştırınız
  • 192.168.127.140 windows serverin IP adresi olarak ayarlanmalıdır
  • ansible_user windows oturum açma kullanıcı adınız olarak ayarlanmalıdır
  • ansible_password windows oturum açma şifreniz olarak ayarlanmalıdır
[windows]

192.168.127.140

[windows:vars]

ansible_user= administrator
ansible_password= password
ansible_connection= winrm
ansible_winrm_server_cert_validation=ignore

Windows üzerinde yapılacak işlemler

  • Arama kısmına powershell yazın sağ tıklayıp yönetici olarak açın ve aşağıdaki komutları sırasıyla girin

  • Komut 1

$url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"
  • Komut 2
$file = "$env:tmp\ConfigureRemotingForansible.ps1"
  • Komut 3
(New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
  • Komut 4
powershell.exe -ExecutionPolicy ByPass -File $file

Bağlantı testi

  • Ubuntu sunucusu üzerinden aşağıdaki komutu girelim
ansible windows -m win_ping
  • Çıktı şöyle olmalıdır:
192.168.127.137 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
  • YAPILANDIRMA BAŞARILI