Category Archives: UNIX Like

Ansible – Openshift

Pengantar

for you

Teknologi itu terkadang ‘mengganggu’ ya, dengan tanda kutip, teknologi itu kadang mengganggu dengan sifatnya yang selalu dinamis berkembang dari waktu ke waktu. Teringat hukum moore untuk grafik peningkatan kecepatan microprocessor, tidak saja kita dituntut untuk selalu update di setiap perkembangannya. Satu sisi, kita me-leverage diri memiliki kecakapan guna mendukung performansi di lingkungan pekerjaan. Salah satunya jika kita berbicara tentang sistem otomasi yang sangat berguna bagi para system administrator atau DevOps dalam mengelola puluhan atau bahkan ratusan server selain menggunakan kustomisasi script. Meksipun bukan hal yang baru, dilihat dari fitur yang disediakan ansible cukup mumpuni untuk hal ini. Ditambah kita bisa integrasikan dengan layanan openshift sebagai PaaS (Platform as a Service) atau container platform dimana kita bisa mengembangkan aplikasi yang kita buat (bisa menggunakan java, perl, javascript, php, python, ruby, atau .NET) dan dilakukan deployment.

Ansible

[root@master tifosilinux] # ansible –version
ansible 2.7.0
config file = /etc/ansible/ansible.cfg
configured module search path = [u’/root/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’]
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

Pada tulisan ini ansible 2.7 berjalan di atas OS CentOS 7 dengan tahap instalasi dan konfigurasi yang tidak sulit. Cukup menggunakan parameter berikut dan ansible sudah ada di dalam lingkungan sistem operasi kamu:

~# yum install -y epel-release && yum -y –enablerepo=epel install docker ansible git wget

Berikut konfigurasi yang digunakan di /etc/ansible/hosts :

[OSEv3:children]
masters
nodes

[OSEv3:vars]
ansible_ssh_user=tifosilinux

ansible_sudo=true
ansible_ask_sudo_pass=false
ansible_become=true

deployment_type=origin

#openshift_master_identity_providers=[{‘name’:’htpasswd_auth’,’login’:’true’,’challenge’:’true’,’kind’:’HTPasswdPasswordIdentityProvider’,’filename’: ‘/etc/origin/master/htpasswd’}]

containerized=true
openshift_release=v3.10
openshift_image_tag=v3.10
openshift_public_hostname=master.tifosilinux
# Untuk master default subdomain bisa di marking jika kita tidak melakukan pointing (menggunakan key) ke cloud hosting/ domain
#openshift_master_default_subdomain=apps.master.tifosilinux

[masters]
master.tifosilinux

[nodes]
master.tifosilinux openshift_node_labels=”{‘zone’:’west’}”
node.tifosilinux openshift_node_labels=”{‘zone’:’east’}”

Untuk result/ output dari versi ansible yang digunakan adalah sebagai berikut :

[root@master tifosilinux]# ansible –version
ansible 2.7.0
config file = /etc/ansible/ansible.cfg
configured module search path = [u’/root/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’]
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] 

Tes dengan parameter berikut apakah master atau node me-reply dengan baik sesuai konfigurasi :

[root@master tifosilinux]# ansible -m ping master.tifosilinux
[DEPRECATION WARNING]: DEFAULT_ASK_SUDO_PASS option, In favor of Ansible Become, which is a generic framework. See become_ask_pass. , use become instead. This feature will be removed in
version 2.8. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
[DEPRECATION WARNING]: The sudo command line option has been deprecated in favor of the “become” command line arguments. This feature will be removed in version 2.9. Deprecation warnings can
be disabled by setting deprecation_warnings=False in ansible.cfg.
SUDO password:
master.tifosilinux | SUCCESS => {
“changed”: false,
“ping”: “pong”
}

Sebelumnya jangan lupa untuk menambahkan fungsi di ansible untuk melewatkan password (biasanya cara ini dilakukan jika mengalami kendala saat master/ node melakukan shared connection) serta cara bagaimana me-setting hostname dan copying key agar passwordless untuk master dan per node. Namun jangan lupa lakukan setting hostname sebelumnya.

[tifosilinux@master ~]$ hostnamectl set-hostname master.tifosilinux # lakukan juga di node
[tifosilinux@master ~]$ ssh-copy-id tifosilinux@master.tifosilinux # lakukan juga ke node
[tifosilinux@master ~]$ export ANSIBLE_ASK_SUDO_PASS=true

Kurang lebih cara tersebut sudah bisa dilakukan sebelum lebih jauh mengenal inventory, playbooks as configuration, deployment, and orchestration language, dan best practice nya 

Openshift

Brought to you by redhat

Seperti yang telah diterangkan di awal, openshift ini sangat membantu para developer melakukan deployment dan me-scale up aplikasi mereka. Melalui git kita dapat mengunduh openshift yang telah di integrated dengan ansible dengan tujuan kemudahan maintenance aplikasi yang berjalan diatas container atau instance dalam skala besar. Objective membuat aplikasi dengan framework django (dengan bahasa python) pun bisa dilakukan di environment openshift.

[tifosilinux@master ~]$ cd
[tifosilinux@master ~]$ git clone https://github.com/openshift/openshift-ansible.git

Terakhir, tinggal kita eksekusi parameter dengan menampilkan seluruh informasi / debugging berikut :

[tifosilinux@master ~]$ ansible-playbook -i /etc/ansible/hosts -vvvv openshift-ansible/playbooks/deploy_cluster.yml

Testimonial

Sekarang, saatnya saya review secara pribadi 😀 kesan-kesan menggunakan teknologi ini 😛 dan dengan jujur dan spontan saya katakan : “Cukup membuat saya enggan dengan teknologi ini 😀 “, karena setelah saya baca prerequisites nya (semisal) untuk openshift ini, membutuhkan requirement yang tidak kecil juga untuk ukuran orang yang hanya ingin sekedar mengenal dan mempelajari. Bagaimana tidak ?, lihat minimum requirement vCPU dan Memory di point-point berikut (untuk saya pribadi sih tidak masalah 🙂 , namun bagaimana dengan personal yang lain yang hanya ingin sekedar mengenal atau mungkin tertarik mengimplementasikan dengan uji coba terlebih dahulu) :

Masters– Physical or virtual system, or an instance running on a public or private IaaS.
– Base OS: RHEL 7.3, 7.4, or 7.5 with the “Minimal” installation option and the latest packages from the Extras channel, or RHEL Atomic Host 7.4.5 or later.
Minimum 4 vCPU (additional are strongly recommended).
Minimum 16 GB RAM (additional memory is strongly recommended, especially if etcd is co-located on masters).
– Minimum 40 GB hard disk space for the file system containing /var/. Minimum 1 GB hard disk space for the file system containing /usr/local/bin/.
– Minimum 1 GB hard disk space for the file system containing the system’s temporary directory.
– Masters with a co-located etcd require a minimum of 4 cores. 2 core systems will not work.
Nodes– Physical or virtual system, or an instance running on a public or private IaaS.
– Base OS: link:RHEL 7.3, 7.4, or 7.5 with “Minimal” installation option, or RHEL Atomic Host 7.4.5 or later.NetworkManager 1.0 or later.1 vCPU.
– Minimum 8 GB RAM.Minimum 15 GB hard disk space for the file system containing /var/
– Minimum 1 GB hard disk space for the file system containing /usr/local/bin/.
– Minimum 1 GB hard disk space for the file system containing the system’s temporary directory. 
– An additional minimum 15 GB unallocated space per system running containers for Docker’s storage back end; see Configuring Docker Storage. Additional space might be required, depending on the size and number of containers that run on the node.
External etcd Nodes– Minimum 20 GB hard disk space for etcd data.
– See the Hardware Recommendations section of the CoreOS etcd documentation for information how to properly size your etcd nodes.
– Currently, OpenShift Container Platform stores image, build, and deployment metadata in etcd. You must periodically prune old resources. If you are planning to leverage a large number of these resources, place etcd on machines with large amounts of memory and fast SSD drives.

Hasilnya ? ya sudah bisa ditebak :

Node Logging
master logging

PLAY RECAP
localhost : ok=8 changed=0 unreachable=0 failed=0
master.tifosilinux : ok=40 changed=0 unreachable=0 failed=1
node.tifosilinux : ok=20 changed=0 unreachable=0 failed=1

INSTALLER STATUS 
Initialization : Complete (0:00:50)
Health Check : In Progress (0:02:19)
This phase can be restarted by running: playbooks/openshift-checks/pre-install.yml


openshift-ansible recapitulation

Belum lagi terkendala masalah konifgurasi yang masih butuh banyak penyesuaian, akan cukup menyulitkan bagi sebagian orang.

root@master tifosilinux]# vim /home/tifosilinux/openshift-ansible/playbooks/init/sanity_checks.yml

Marking fitur validate openshift node group seperti berikut :


name: Run variable sanity checks
sanity_checks:
check_hosts: “{{ l_sanity_check_hosts | default(groups[‘oo_all_hosts’]) }}”
# node_group_checks is a custom action plugin defined in lib_utils.
#- name: Validate openshift_node_groups and openshift_node_group_name
# node_group_checks: {}

Belum lagi masalah kompatibilitas versi dari setiap dependensi 😀  (dalam hal ini openshift dan ansible bisa kita lihat versinya dengan params : ~# openshift version && ansible –version).
Jadi ya.. cukup merepotkan.

Salam

Advertisements

superb


Superb !!.. it’s just that

The Power of Dos2Unix

Sudah menjadi hal yang lumrah jika terjadi masalah saat migrasi dari Windows ke Linux. Mulai dari ketidak familiar-an dengan aplikasi yang digunakan ( jangan panik, kamu bisa melihat alternative project GNU/ linux disini : https://www.linuxalt.com/ ) atau bahkan berkas yang inkompatibel saat akan diolah dari environment Windows ke GNU/ Linux.

Lagi-lagi jangan panik karena Linux selalu memberikan alternatif lewat komunitas-nya yg free. Sebagai contoh, jika kamu akan mengolah sebuah data dari berkas hasil ‘olahan’ di lingkungan Windows dan mengalami kendala saat pemrosesannya di web aplikasi kamu, coba gunakan langkah berikut untuk identifikasi dan penyesuaian.

~# cat -A <files> # Use this concatenation to show all hiden characters
~# dos2unix <files>

Maka secara singkat berkas kamu tidak akan mengalami kendala lagi untuk kemudian diolah lebih lanjut.

Encrypt and Decrypt in Kleopatra

Encrypt and Decrypt in KleopatraSalah satu tools enkripsi yang paling mudah digunakan (easy to use) ialah dengan GPG (GNU Privacy Guard) – Kleopatra di Linux atau GPG4win jika kamu menggunakan windows. Untuk konsepnya sendiri tidak berbeda, yakni ada phase generate private key dan public key. Tentunya phase ini dilakukan setelah kita membuat sebuah pasangan kunci OpenPGP (a personal OpenPGP Key Pair). Berikut langkahnya secara garis besar  :

  1. Jalankan kleopatra di linux ( ~# kleopatra) dan masuk ke tab menu file new key pair -> create a personal OpenPGP key pair -> Enter Details like Name & Email, in advance settings setup RSA level into the highest one (4096bits) -> Create -> Enter Passphrase, Repeat then quality will show you how good and secure your passphrase -> If anything didn’t show error or mistake, key pair will be successfully created and finish.
  2. Jika point 1 berhasil dengan baik, kita bisa melakukan export public key dari key pair atau certificate yang telah terbentuk sebelumnya. Nantinya kunci publik ini lah yang di shared  ke vendor/ client. Lakukan dengan langkah berikut : Klik kanan certificate -> Export Certificates -> Browse where you want to save it -> save. Nanti akan tercipta file random character dengan format .asc atau ASCII. Format ini salah satunya agar lebih user friendly saat di attach ketika di share.
  3. Berikutnya kita export private key dengan cara yang sama mudahnya seperti point 2. Berkas private key ini boleh di share  untuk decrypted bersama kunci publik jika saat dokumen di encrypt tidak disertakan atau di konfigurasi permissionnya untuk spesifik user (encrypt for me only atau encrypt for others). Klik kanan certificate -> Export Secret Keys -> Browse where you want to save it -> save. Jangan lupa enable format ascii armor ( .asc ) nya.
  4. Pada tahap import public key, bisa dilakukan dengan klik kanan pada tray icon kleopatra -> clipboard -> certificate import. Langkah ini bisa dilakukan oleh client/ vendor yang telah menerima kunci publik dari server sebagai kunci dekripsi berkas yang nantinya akan dikirim.
  5. Untuk tahap enkripsi, bisa dengan 2 cara. Yakni menyalin seluruh isi dokumen kemudian klik kanan pada tray icon kleopatra -> clipboard -> Encrypt atau klik menu file pada aplikasi -> Sign/ Encrypt. Set kebutuhan enkripsi ini apakah di encrypt untuk pribadi atau untuk certificate/ user lain.
    Encrypt and Decrypt in Kleopatra Encrypt and Decrypt in Kleopatra
  6. Untuk decrypted , klik menu file pada aplikasi -> Decrypt/ Verify.
    Encrypt and Decrypt in KleopatraEncrypt and Decrypt in Kleopatra


Note : 
Untuk integrasi OpenPGP ke email, kita bisa menggunakan Enigmail

Extends Storage – Performing an online resize

RedhatThis is a dangerous & thrilling step because we do it on production server directly. I presumed you have read the following posts : LVM Subject  so we are focusing on How to Extends our Linux Storage – Performing an online resize (on the fly). It means without disturbing our traffic or other realtime activities.

STEP 1 : Check logical volume information after check filesystems disk space to ensure  which partition that we have to extends.
#####################################
root@svr-2:~# lvs
File descriptor 3 (pipe:[1244115786]) leaked on lvs invocation. Parent PID 16940: -bash
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
root ubuntu -wi-ao 398.75g
swap_1 ubuntu -wi-ao 1.00g

STEP 2 : Get the information about newly added hard drive using fdisk -l command
#####################################
Disk /dev/sdd: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders, total 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdd doesn’t contain a valid partition table

STEP 3 : Continue to create the partition on the newly added harddrive, type n , p (primary), 1 (partition number), t (filesystems type), 8e (for Linux LVM), w (write changes), then the partition table will be altered
#####################################
root@svr-2:/# fdisk /dev/sdd
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x3d67c672.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

STEP 4 : identify the already mounted lvm filesystems type (ext4 will be global filesystems we used)
#####################################
root@svr-2:/# df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/mapper/ubuntu-root ext4 412097132 316081888 75145552 81% /
udev devtmpfs 8208612 4 8208608 1% /dev
tmpfs tmpfs 1643540 300 1643240 1% /run
none tmpfs 5120 0 5120 0% /run/lock
none tmpfs 8217700 0 8217700 0% /run/shm
/dev/sda1 ext2 233191 27519 193231 13% /boot

Continue reading

Tips and Tricks AWK – Sed (Stream editor)

One day, we want to remove specific line or row from our files such as .txt, .csv, or even it has come from .sql files. Just using these params :
~# sed -e ‘5,10d;12d’ <your_files> #delete lines 5 through 10 and 12 temporarily ( options -e or permanently with -i )
In another case of awk, we want to parse data or word between delimiter of double quote which is containing two commas like : “hary”,”hary,harysmatta”,”nda”
Just use these params. Simply the best :

awk -vFPAT='([^,]*)|(“[^”]+”)’ -vOFS=, ‘{print $2}’

SSLS Procedure

In order to utilize the service from ssls for their certificate, first you have to make sure that the order status is in progress. It means that domain type, either you have order single or multiple domain are ready to use.
Next you have to choose activation method for domain. Manually upload by putting of comodo activation file *.txt to <DOCUMENT_ROOT>/.well-known/pki-validation/ then access it.
OR you contact the support to activated by email. They will sent you archive as requirement ssl like these : AddTrustExternalCARoot.crt , COMODORSAAddTrustCA.crt , COMODORSADomainValidationSecureServerCA.crt , and STAR_<domain_name>.crt .

Next just put it on these web service config :
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/<domain_directory>/STAR_<domain_name>.crt
SSLCertificateKeyFile /etc/apache2/ssl/<domain_directory>/<domain_name>.key
SSLProtocol All -SSLv2 -SSLv3

But do not forget to initiate <domain_name>.key first with these params:
openssl genrsa -des3 -out myupointid.key 2048
And generate first *.csr code on your server with this params:
openssl req -new -newkey rsa:2048 -nodes -keyout example.key -out example.csr <==== put it on SSLS.com dashboard activation

Done

 

Noted :

Create a self-signed (wildcard) SSL certificate

mkdir /usr/share/ssl/certs/hostname.domain.com
cd /usr/share/ssl/certs/hostname.domain.com
(umask 077 && touch host.key host.cert host.info host.pem)
openssl genrsa 2048 > host.key
openssl req -new -x509 -nodes -sha1 -days 3650 -key host.key > host.cert
…[enter *.domain.com for the Common Name]…
openssl x509 -noout -fingerprint -text < host.cert > host.info
cat host.cert host.key > host.pem
chmod 400 host.key host.pem

Create a self-signed (wildcard) SSL certificate
1) If you received and uploaded the intermediate and root certificates separately, please use this method:

cat your_domain.crt intermediate.crt root.crt >> ssl-bundle.crt

For example, this particular command is applicable for PositiveSSL certificate:

cat example_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt >> ssl-bundle.crt

2) If you received the intermediate certificates in one bundle file or downloaded the certificate files in your account with us, you can use this command:

cat example_com.crt bundle.crt >> ssl-bundle.crt