รับทำ SEO,รับทำ SEO ราคา,รับทำเว็บไซต์,รับทำเว็บไซต์ ราคา,รับทำ SEO,ทำเว็บราคาถูก, รับทําเว็บไซต์, รับทำwebsite,ทำ SEO ราคา, รับทำ SEO ราคา, รับทำ SEO ราคาถูก, สอนทำ SEO

แสดงบทความที่มีป้ายกำกับ Ansible AWX แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Ansible AWX แสดงบทความทั้งหมด

วันพฤหัสบดีที่ 23 พฤษภาคม พ.ศ. 2562

วิธีติดตั้ง Ansible AWX บน CentOS 7 แบบ Step by step

              Ansible ระบบคอนฟิกเซิร์ฟเวอร์ที่ได้รับความนิยมสูงถูก Red Hat ซื้อไปตั้งแต่ปี 2015 โดยสินค้าทำเงินของ Ansible คือ Ansible Tower ระบบจัดการระดับองค์กรที่สามารถจัดการสิทธิ์ควบคุมเซิร์ฟเวอร์ สร้างกลุ่มเซิร์ฟเวอร์ และมีหน้าเว็บสำหรับการจัดการระบบ เมื่อเดือนที่แล้วทาง Red Hat ก็ปล่อย Ansible Tower ออกมาเป็นโครงการโอเพนซอร์สโดยใช้ชื่อว่า AWX

ตัว AWX จะใช้สัญญาอนุญาตแบบ Apache 2.0 ทำให้ใช้งานได้แทบทุกกรณี แต่ระบบการออกเวอร์ชั่นของ AWX จะถี่กว่ามาก (คาดว่าจะถี่ถึง 2 สัปดาห์ครั้ง แต่รอบล่าสุดเวอร์ชั่น 1.0.1 ใช้เวลาเกือบสองเดือน) แม้ว่าจะมีเวอร์ชั่น stable ออกมาเรื่อยๆ แต่ก็ไม่ได้แปลว่าจะมีการซัพพอร์ตระยะยาวใดๆ รวมถึงไม่ได้เข้าโครงการ Red Hat Open Source Assurance ด้วย


ชื่อ AWX เคยเป็นชื่อเดิมของ Ansible Tower มาก่อน โดยย่อมาจาก AnsibleWorks แต่ตอนนี้เมื่อมาใช้ชื่อ AWX ก็ไม่ได้เรียกเป็นคำย่อของคำอื่นอีก


ข้อมูลเพิ่มเติม : https://github.com/ansible/awx

วันนี้ผมจะมาสอนวิธีติดตั้งง่ายๆ ทดสอบจำลองเซิร์ฟเวอร์ 3 เครื่อง CentOS 7 minimal installation โดยแต่ละเครื่อง ให้ติดตั้ง CentOS 7 minimal โดยตั้งชื่อและ Set IP Address ดังนี้ครับ 192.168.1.25 AWX Server
192.168.1.21 client1
192.168.1.22 client2

System Requirements สำหรับ AWX Server

1.แรมขั้นต่ำ  4GB
2.CPU coret 2 cpu
3.พื้นที่เก็บข้อมูล 20GB
4.รันบน VMWARE ESXI




บน AWX Server

ตรวจสอบการตั้งค่า SELinux
[root@awx ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28
[root@awx ~]#
ทำการแก้ไข และเพิ่มข้อมูลลงบน Host ไฟล์ vi /etc/hosts
[root@awx ~]# vi /etc/hosts
[root@awx ~]# cat /etc/hosts
192.168.1.25    awx.sunil.cc awx
192.168.1.21    client1.sunil.cc client1
192.168.1.22    client2.sunil.cc client2
[root@awx ~]#
เพิ่ม Rule Firewall
[root@awx ~]# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service. 
[root@awx ~]# systemctl start firewalld

[root@awx ~]# firewall-cmd --add-service=http --permanent;firewall-cmd --add-service=https --permanentsuccesssuccess


[root@awx ~]# systemctl restart firewalld[root@awx ~]#


ให้ทำการ Enable CentOS EPEL
[root@awx ~]# yum install -y epel-release

การทำ AWX Server นั้นต้องติดตั้ง postgresql 9.6 ด้วยครับ
ให้ทำการ Enable postgreSQL repo
[root@awx ~]# yum install -y https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
ติดตั้ง postgreSQL
[root@awx ~]# yum install postgresql96-server -y
ติดตั้ง rpms.

[root@awx ~]# yum install -y rabbitmq-server wget memcached nginx ansible

เริ่มติดตั้ง Ansible AWX



ใส่ AWX repo
[root@awx ~]# wget -O /etc/yum.repos.d/awx-rpm.repo https://copr.fedorainfracloud.org/coprs/mrmeee/awx/repo/epel-7/mrmeee-awx-epel-7.repo

ติดตั้ง rpm



[root@awx ~]# yum install -y awx

Initial database

[root@awx ~]# /usr/pgsql-9.6/bin/postgresql96-setup initdb 

Initializing database ... OK
[root@awx ~]#


สตาร์ทเซอร์วิส Rabbitmq Service


[root@awx ~]# systemctl start rabbitmq-server[root@awx ~]# systemctl enable rabbitmq-serverCreated symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.[root@awx ~]#



สตาร์ทเซอร์วิส  PostgreSQL Service

[root@awx ~]# systemctl enable postgresql-9.6Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-9.6.service to /usr/lib/systemd/system/postgresql-9.6.service.[root@awx ~]# systemctl start postgresql-9.6

สตาร์ทเซอร์วิส Memcached Service

[root@awx ~]# systemctl enable memcachedCreated symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.

[root@awx ~]# systemctl start memcached

ทำการสร้าง Postgres user

[root@awx ~]# sudo -u postgres createuser -S awxcould not change directory to "/root": Permission denied[root@awx ~]#

ไม่ต้องสนใจ Error นะครับ
ทำการสร้าง database ครับ
[root@awx ~]# sudo -u postgres createdb -O awx awxcould not change directory to "/root": Permission denied

[root@awx ~]#

ไม่ต้องสนใจ Error นะครับ
นำเข้าข้อมูล data ไปที่ Database ครับ
[root@awx ~]# sudo -u awx /opt/awx/bin/awx-manage migrate


Initializing the configuration for AWX[root@awx ~]# echo "from django.contrib.auth.models import User; User.objects.create_superuser('admin', 'root@localhost', 'password')" | sudo -u awx /opt/awx/bin/awx-manage shell [root@awx ~]# sudo -u awx /opt/awx/bin/awx-manage create_preload_data Default organization added. Demo Credential, Inventory, and Job Template added. [root@awx ~]# sudo -u awx /opt/awx/bin/awx-manage provision_instance --hostname=$(hostname) Successfully registered instance awx.sunil.cc (changed: True) [root@awx ~]# sudo -u awx /opt/awx/bin/awx-manage register_queue --queuename=tower --hostnames=$(hostname) Creating instance group tower Added instance awx.sunil.cc to tower (changed: True) [root@awx ~]#

Configure Nginx


Take the backup of nginx.conf[root@awx ~]# cd /etc/nginx/ [root@awx nginx]# pwd /etc/nginx [root@awx nginx]# cp nginx.conf nginx.conf.bkp



Replace the nginx conf file[root@awx nginx]# wget -O /etc/nginx/nginx.conf https://raw.githubusercontent.com/sunilsankar/awx-build/master/nginx.conf



Enable and start nginx service[root@awx ~]# systemctl start nginx [root@awx ~]# systemctl enable nginx



Start the awx services[root@awx ~]# systemctl start awx-cbreceiver [root@awx ~]# systemctl start awx-celery-beat [root@awx ~]# systemctl start awx-celery-worker [root@awx ~]# systemctl start awx-channels-worker [root@awx ~]# systemctl start awx-daphne [root@awx ~]# systemctl start awx-web



Make sure the service is started during restart[root@awx ~]# systemctl enable awx-cbreceiver Created symlink from /etc/systemd/system/multi-user.target.wants/awx-cbreceiver.service to /usr/lib/systemd/system/awx-cbreceiver.service. [root@awx ~]# systemctl enable awx-celery-beat Created symlink from /etc/systemd/system/multi-user.target.wants/awx-celery-beat.service to /usr/lib/systemd/system/awx-celery-beat.service. [root@awx ~]# systemctl enable awx-celery-worker Created symlink from /etc/systemd/system/multi-user.target.wants/awx-celery-worker.service to /usr/lib/systemd/system/awx-celery-worker.service. [root@awx ~]# systemctl enable awx-channels-worker Created symlink from /etc/systemd/system/multi-user.target.wants/awx-channels-worker.service to /usr/lib/systemd/system/awx-channels-worker.service. [root@awx ~]# systemctl enable awx-daphne Created symlink from /etc/systemd/system/multi-user.target.wants/awx-daphne.service to /usr/lib/systemd/system/awx-daphne.service. [root@awx ~]# systemctl enable awx-web Created symlink from /etc/systemd/system/multi-user.target.wants/awx-web.service to /usr/lib/systemd/system/awx-web.service. [root@awx ~]#

Configure passwordless login from AWX server


Create a user on all the 3 hosts.


Here in this tutorial, I am creating a user ansible on all the 3 servers.[root@awx ~]# useradd ansible [root@client1 ~]# useradd ansible [root@clien2 ~]# useradd ansible



Generating ssh key in awx server[root@awx nginx]# su - ansible [ansible@awx ~]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ansible/.ssh/id_rsa): Created directory '/home/ansible/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ansible/.ssh/id_rsa. Your public key has been saved in /home/ansible/.ssh/id_rsa.pub. The key fingerprint is: SHA256:RW/dhTsxcyGicleRI0LpLm+LyhAVinm0xktapodc8gY ansible@awx.sunil.cc The key's randomart image is: +---[RSA 2048]----+ | . . ..o. +ooo| | = o . +.oo+*.o| | E @ . ..oo.+ o*.| |. # o oo.. o | | = * S . | | o . . . | | . o | | o .o | | o..... | +----[SHA256]-----+ [ansible@awx ~]$



Adding the sudoers entry on all 3 servers as a last entry to the file


[root@awx nginx]# visudo ansible ALL=(ALL) NOPASSWD: ALL



Copy the content of id_rsa.pub to authorized_keys on all the 3 servers[ansible@awx .ssh]$ cat id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDStB8JGsVsSLppwYWdnEPLE4xwFqRDn7xE/d3hjBQ6A0JGm1t+GtHB3GPIEjANFTnxQwHpR+cRttbL3mlQvpIYqCZOMZds9XA7VI5qgs0aSGUU8cNYKjmmrMpJa9sB4WVtj3M4u2fEXt9FKKCtjMMpOfiQxIkEhYZ+2GoAX5sHXan7TPcgwb5r7WW6j43aaPc6g9XWN63nonQz6KeMSFZ/y0o2HJMh1FEkktZw6A1HVfn+JNWoQb1glyqGjO1ync+Sok8yXpqakEEWpXNQSQYs4eBEwfkKql5EuolQMIbF9VYhpEcR9LfbMvYdq/RPKWN3mmRMWfPZ2dTZl515XBdV ansible@awx.sunil.cc [ansible@awx .ssh]$ [ansible@awx .ssh]$ cat authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDStB8JGsVsSLppwYWdnEPLE4xwFqRDn7xE/d3hjBQ6A0JGm1t+GtHB3GPIEjANFTnxQwHpR+cRttbL3mlQvpIYqCZOMZds9XA7VI5qgs0aSGUU8cNYKjmmrMpJa9sB4WVtj3M4u2fEXt9FKKCtjMMpOfiQxIkEhYZ+2GoAX5sHXan7TPcgwb5r7WW6j43aaPc6g9XWN63nonQz6KeMSFZ/y0o2HJMh1FEkktZw6A1HVfn+JNWoQb1glyqGjO1ync+Sok8yXpqakEEWpXNQSQYs4eBEwfkKql5EuolQMIbF9VYhpEcR9LfbMvYdq/RPKWN3mmRMWfPZ2dTZl515XBdV ansible@awx.sunil.cc [ansible@awx .ssh]$ chmod 600 authorized_keys



Client1[root@client1 ~]# su - ansible [ansible@client1 ~]$ mkdir .ssh [ansible@client1 ~]$ chmod 700 .ssh [ansible@client1 ~]$ cat .ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDStB8JGsVsSLppwYWdnEPLE4xwFqRDn7xE/d3hjBQ6A0JGm1t+GtHB3GPIEjANFTnxQwHpR+cRttbL3mlQvpIYqCZOMZds9XA7VI5qgs0aSGUU8cNYKjmmrMpJa9sB4WVtj3M4u2fEXt9FKKCtjMMpOfiQxIkEhYZ+2GoAX5sHXan7TPcgwb5r7WW6j43aaPc6g9XWN63nonQz6KeMSFZ/y0o2HJMh1FEkktZw6A1HVfn+JNWoQb1glyqGjO1ync+Sok8yXpqakEEWpXNQSQYs4eBEwfkKql5EuolQMIbF9VYhpEcR9LfbMvYdq/RPKWN3mmRMWfPZ2dTZl515XBdV ansible@awx.sunil.cc [ansible@client1 ~]$ chmod 600 .ssh/authorized_keys



Client2[root@client2 ~]# su - ansible [ansible@client2 ~]$ mkdir .ssh [ansible@client2 ~]$ chmod 700 .ssh [ansible@client2 ~]$ cat .ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDStB8JGsVsSLppwYWdnEPLE4xwFqRDn7xE/d3hjBQ6A0JGm1t+GtHB3GPIEjANFTnxQwHpR+cRttbL3mlQvpIYqCZOMZds9XA7VI5qgs0aSGUU8cNYKjmmrMpJa9sB4WVtj3M4u2fEXt9FKKCtjMMpOfiQxIkEhYZ+2GoAX5sHXan7TPcgwb5r7WW6j43aaPc6g9XWN63nonQz6KeMSFZ/y0o2HJMh1FEkktZw6A1HVfn+JNWoQb1glyqGjO1ync+Sok8yXpqakEEWpXNQSQYs4eBEwfkKql5EuolQMIbF9VYhpEcR9LfbMvYdq/RPKWN3mmRMWfPZ2dTZl515XBdV ansible@awx.sunil.cc [ansible@client2 ~]$ chmod 600 .ssh/authorized_keys



Check the passwordless login from AWX server.[ansible@awx ~]$ ssh client1 Last login: Sun Mar 11 13:14:06 2018 from 192.168.1.25 [ansible@client1 ~]$ exit logout Connection to client1 closed. [ansible@awx ~]$ ssh client2 Last login: Sun Mar 11 12:50:14 2018 from 192.168.1.25 [ansible@client2 ~]$



Validate the Login:





The Login details are:


Username: "admin"

Password: "password"





In the next tutorial will show how to add a playbook and run the job.
Share: