Posts

Showing posts from April, 2018

Build React Native App (4) - Redux, Jest, and NativeBase

Image
From this blog, typescript feature will be added. There are couple of ways to implement static type checking like; flow from facebook, PropTypes and Typescript.Typescript is well integrated with Visual Studio Code and supports better linter, error messages, and intellisense.Reference siteGithub Sample Ex4Currnet versionD:\GitRepo\reactnative>npm --version 6.3.0 D:\GitRepo\reactnative>react-native --version react-native-cli: 2.0.1 react-native: n/a - not inside a React Native project directory D:\GitRepo\reactnative>yarn --version 1.9.4 Creating React Native App$ react-native init ex4 If you want to specify the version, add "--version 0.57.3" at the end.Add NativeBase to React Native$ npm install native-base --save ... + native-base@2.8.1 added 71 packages from 42 contributors, removed 50 packages, updated 829 packages and audited 34989 packages in 138.542s found 0 vulnerabilities $ $ yarn yarn install v1.9.4 warning package-lock.json found. Your project contains l…

Automation with Ansible (10) - Create VMs from VCenter with Multi Environment Architecture

Image
IntroductionFrom this series, all folder structure will be followed from the previous Multi environment stucture.The steps to create VMs are;Create Inventory fileCreate Variables Shared variablesGroup variablesCreate Ansible Playbook Creating VMs from CentOS TemplateSet Network interfaceAdd MAC Address to dhcpd.confRebootReferenceGithub codeFolders/Files list\---ansible | CreateVMs.yaml | +---inventory | +---shared_vars | | shared-secrets.yml (empty) | | shared-vars.yml (empty) | | | \---test | +---dmz | | | vm_hosts | | | | | \---group_vars | | vcenter.yml | | | \---internal | | vm_hosts | | | \---group_vars | secrets.yml (empty) | vcenter.yml | \---tasks load-vars.yml Create In…

Ansible with automation(9) - Multi Environment Architecture

Image
IntroductionUntil series 9, we've prepared to create Docker Cluster and to deploy microservices to the Cluster. From this series, we will start to deploy services to multiple environment.ArchitectureFrom one of our project, we want to automate from creating VMs to deploy microservices. I've looked at multiple difference options for automation. However, my choice is Ansible because it doens't need any additional installation on the remote machines.To march the entire steps, I segmented entire scopes to the following segments;Creating VMs from VMWare and manage ip addresses (CreateVMs.yaml)Creating Docker Cluster with Community edition (BuildDockerCECluster.yaml)Deploying default services such as Artifactory, Kong, etc (BuildDefaultMicroService.yaml)Build Docker private repository. Final choice is to use "Harbor" from VMware.Deploying custom solutions to Docker Cluster (DeployMicroservices.yaml)This is the entire drawing to support from the above segmentsOverview o…

Export folder structure to file on Windows, Mac, and Linux

IntroductionMost time, I make screenshot to show folder structure, but whenever there is change, it is painful to make screen capture again and agian. This is how you can export folder structure to text file.Tree on Windows"tree.exe" is installed as default and you can run it from command prompt.d:\GitRepo\github\dockeransible>tree /? Graphically displays the folder structure of a drive or path. TREE [drive:][path] [/F] [/A] /F Display the names of the files in each folder. /A Use ASCII instead of extended characters. d:\GitRepo\github\dockeransible>tree d:\gitrepo\github\dockeransible /A /F > tree.txt d:\GitRepo\github\dockeransible>notepad tree.txt d:\GitRepo\github\dockeransible> Output from the commandFolder PATH listing Volume serial number is D8A7-163B D:\GITREPO\GITHUB\DOCKERANSIBLE | README.md | tree.txt | +---2-CreateVM | CreateVM.yaml | +---4-AnsibleDebug | DisplayClonedVMInfo.yaml | +---5-AddIpToDHCP …

Active Directory authentication using Spring and Apache Library

Recently, I started to work AD authentication again and this is little snippet of AD authentication portion.Create simple springboot and tested with it.package com.alexjoh; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.Arrays; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.auth.AuthScope; import org.apache.http.auth.NTCredentials; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.config.AuthSchemes; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.entity.Str…

Automation with Ansible(8) - Running command on Remote computer

Running command on remoteI need to run commands from remote and due to the password prompts, there was a challenge on it. To do this, "pexpect" module should be installed on the remote target computer.Prerequestic"pip" program on remote computerNeed to install pexpect using pip programIn my case, remote computer name is "docker01" and local computer name is "ns01". However, I recommend to install "pexpect" package on both computerReferenceGithub codeInstall pip and pexpect module[root@docker01 ansible]# yum install epel-release Installing : epel-release-7-9.noarch 1/1 Installed: epel-release.noarch 0:7-9 ... Complete! …

Automation with Ansible (7) - Accessing inventory host variable from playbook

Accessing host variable from playbook overviewBefore writing full script, I need to learn how to access variables from host file. I tried to use range varible from host variable, but this doesn't work.Host filefilename is "dockerhosts"[dockermasters] dockermaster01 ipaddr=10.200.0.152 dockermaster02 ipaddr=10.200.0.153 [dockerworkers] dockerworkders01 ipaddr=10.200.0.154 dockerworkders02 ipaddr=10.200.0.155 dockerworkders03 ipaddr=10.200.0.156 YAML playbook filefilename is "test.yaml"--- - name: Access Inventory Variable hosts: dockermasters connection: local # vars: # - ip: "{{ hostvars['hostname'][client_ip] }}" # - hostname: "{{ hostvars['hostname'][client_hostname] }}" tasks: - name: createVM from Template debug: var: hostvars[inventory_hostname]['ipaddr'] - name: show hostname debug: msg: "hostname is {{ inventory_hostname }}" Result[ansible@ansible01…

Automation with Ansible (6) - DDNS(Dynamic DNS) implementation with DNS(BIND) and DHCP on CentOS 7

Running DNS and integrate with DHCP on CentOS We've reviewed how to add dhcp static IP address from DHCP and how to add it using ansible. This tutorial will show how to update DNS entry dynamically as soon as new IP is added into DHCP.
ReferenceDDNS ReferenceDDNS Reference
Steps to implement DDNS DNS setting
dns domain name: svcdmztest.flair.localhostname: nsdmz01ip: 10.201.0.30 Setup steps
Install BIND, Bind-utils, and DHCPGenerate Key (HMAC-SHA256 doesn't work this this version)Configure DNS(BIND) settingsConfigure DHCP settingsAdd filewall rulesModify nameserverStart DHCP and DNS service 1. Install BIND, Bind-utils and DHCP on CentOS If notname is not set, please set with hostnamectl
[root@nsdmz01 log]# hostnamectl set-hostname nsdmz01 [root@nsdmz01 ~]# yum install bind bind-utils dhcp ... completed 2. Generate KEY To update DNS record, DHCP and DNS should have common key.
Generate key[root@nsdmz01 ~]# dnssec-keygen -v 5 -a HMAC-MD5 -b 128 -r /dev/urandom -n USER DDNS_UPDATE …

Automation with Ansible (5) - Change/Manage IP from cloned VM

Change and Manage IP from cloned VMThere is a challenge to manage hosts of cloned copies because template can't assign or change any information.For this, we are going to do thisRunning DHCP from ansible hostAdd ssh key to CentOS template to change configurationPreparing YAML Clone from templateRead cloned mac addressAdd mac address to ansible dhcpconfig and assign ip address with static leaseStart cloned copyUpdate hostname on the cloned copy1) setup DHCP on ansible hostInstalling DHCP, sudo yum install dhcp[ansible@ansible01 test]$ sudo yum install dhcp Loaded plugins: fastestmirror, langpacks base | 3.6 kB 00:00:00 code | 2.9 kB 00:00:00 epel/x86_64/metalink | 12 kB 00:00:00 epel | 4.7 kB 00:00:00 extras …

Use bitbucket as private Maven repository

Image
IntrodcutionI've been using bitbucket cloud service and we would like to use pipeline, but we have a challenge on the library. Most project has library and will be needed our own repository. However, this has drawback to use pipleline if we set the repository type as private. We can't set the login and password from cloud.Implementation StepsGenerate ssh keyUpload the key to bitbucket settingTest bitbucket ssh connectionCreate Repsository in BitbucketAdd plugin to pom.xmlAdd repository to pom.xmlAdd distributeManagement to pom.xmlSet login and password for the git protocolThere are two ways to configure bitbucket as repository; one method is to use one repository with two different branch and the other mehtod is to use two different repositories to servce release and snapshot. We will choose 2nd choice.1. Generate ssh keyRun ssh-keygen to generate id_rsa.pub key$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/Users/alexjoh/.ssh/id_rsa)…

Automation with Ansible (4) - Display Cloned VM information with Ansible and vsphere_client

Display Created/Provisioed/Cloned VM information using ansibleThis will demonstrate how to collected information from Ansible and show the value on the screen.ReferenceAnsible vshper_client{:rel=nofollow}Github codeYAML file- name: Create VM from Template and Display Infomation hosts: localhost connection: local tasks: - name: Retrieve Cloned VM vsphere_guest: vcenter_hostname: 10.200.0.11 validate_certs: no username: administrator@vsphere.local password: password guest: centostemplate04 vmware_guest_facts: yes register: clonedvm - debug: var: clonedvm Result value[ansible@ansible01 test]$ ansible-playbook createtemplate.yml [WARNING]: Unable to parse /etc/ansible/hosts as an inventory source [WARNING]: No inventory was parsed, only implicit localhost is available [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' PLAY [Create VM from Te…

Automation with Ansible (3) - Create/Provisioning Virtual Machine from Template using vsphere_client on VSphere environment

Image
Creating/Provisioing VM using ansibleFrom this tutorial, we will create new VM from template file using vsphere_client.ReferenceAnsible vshper_client{:rel=nofollow}Deploy from templateDeploying from template has two options for the target; 1. Cluster and 2. ESX host.resource_pool: A resource pool is a logical abstraction for flexible management of resources. Resource pools can be grouped into hierarchies and used to hierarchically partition available CPU and memory resources.

Template:
- name: Create VM from Template hosts: localhost connection: local tasks: - name: createVM from Template on Cluster - vsphere_guest: vcenter_hostname: 10.200.0.11 username: administrator@vsphere.local password: mypass guest: centostemplate01 from_template: yes template_src: CentOSTemplate cluster: FlairCluster resource_pool: "/Resources/Docker" vm_extra_config: folder: Docker - name: createVM from Template on ESX - v…

Automation with Ansible (2) - Create/Provisioning Virtual Machine using vsphere_client from VSphere environment

Image
Creating/Provisioing VM using ansibleFrom this tutorial, I will demonstrate how to create empty VM using vsphere_client module. This is really simple example and most configuration file came from Ansible documentReferenceAnsible vshper_client{:rel=nofollow}Github codeInstalling pysphere moduleAs specified from the above reference, we need to install pysphere module from python.[ansible@ansible01 ~]$ sudo pip install pysphere Collecting pysphere Downloading pysphere-0.1.7.zip (516kB) 100% |████████████████████████████████| 522kB 977kB/s Installing collected packages: pysphere Running setup.py install for pysphere ... done Successfully installed pysphere-0.1.7 [ansible@ansible01 ~]$ Checking VCenter optionsFrom the above reference, we will need to prepare following parameteres from VCenter.vcenter_hostname: this is the vcenter server name. In my case FLCATSVCT01(10.200.0.11)
username: login for vcenterpassword: password for vcenterguest: guest name. For this testing, I will use…

Automation with Ansible (1) - Install Ansible 2.4.3 on CentOS 7.4

The goal of these series is building Prod, Test, and Dev environment, building docker cluster, and implemneting CI/CD using ansible for small team project. For repository, Artifactory OSS will be used. I've newbie on the Ansible.This series will show you how to install ansible program on Centos 7.OS VersionCurrent version of CentOS[ansible@ansible01 ~]$ rpm --query centos-release centos-release-7-4.1708.el7.centos.x86_64 [ansible@ansible01 ~]$ Install Ansible 2.4 on CentOS 7.4 using pippip is Python package manager and this will give me an unified way to install packages no matter what linux distribution.[ansible@ansible01 ~]$ sudo yum -y install python-pip .... Completed [ansible@ansible01 ~]$ sudo pip install ansible Collecting ansible Downloading ansible-2.4.3.0.tar.gz (6.5MB) 100% |████████████████████████████████| 6.5MB 135kB/s Collecting jinja2 (from ansible) Downloading Jinja2-2.10-py2.py3-none-any.whl (126kB) 100% |████████████████████████████████| 133kB 1.2M…