Posts

Showing posts from 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 site Github Sample Ex4 Currnet version D:\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. You

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 site Github Sample Ex4 Currnet version D:\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. You

Build React Native App (3) - Adding unit test with Jest

Image
From this blog, the redux library will be added to handle REST service. There are so many good tutorial from blogs and Youtube about the Redux, so I am skipping the redux introduction. Reference site Jest Homepage Github Sample Ex3 Currnet version D:\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 ex3 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 lock files generated by tools other than Yarn. It is advise

Build React Native App (2) - Setup NativeBase and Buttons

Image
From this series, we will NativeBase library to the program Note. I spent almost one day to return 500 error from 0.57.2 and today I noticed that 0.57.3 is released and this version fixed the "return 500" error. Reference site NativeBase Homepage Github Sample Ex2 Currnet version D:\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 ex2 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 $ $ react-native link rnpm-install info Linking assets to ios project rnpm-install WARN ERR

Build React Native App (1) - Setup Dev Environment

From this series, we will create simple testing app with Redux and NativeBase which retrieve rest data and display on the screen. Reference site Jest https://jestjs.io/ React-devtools https://github.com/facebook/react-devtools Github Sample Ex1 Currnet version D:\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 The development server returned response error code: 500 React Native version 0.57.2 has issue with "response error code: 500". Must use 0.57.1. Two ways; Create project with specific version $ react-native init --version 0.57.1 ex1 Update package.json file { "name": "ex1", "version": "0.0.1", "private": true, "scripts": { "start": "node node_modules/react-native/local-cli/cli.js start&qu

Add DNS using network manager in CentOS

Adding DNS using network manager in centos If you change DNS by yourself from /etc/resolv.conf, the configuration will be gone after rebooting the computer. Assuming to run all commands with "root" account. Otherwise, the command should be run with "sudo" in front of each command 1. Find connection # nmcli con NAME    UUID                                  TYPE      DEVICE ens160  4f1de527-4257-467d-8476-c5c6efdf1c74  ethernet  ens160 2. Update DNS entry Format nmcli con mod ipv4.dns dns_servers # nmcli con mod ens160 ipv4.dns "8.8.8.8 8.8.4.4" 3. Restart network # systemctl restart network After update DNS entry, check /etc/resolv.conf file and you will see the new updated record. # cat /etc/resolve.conf

ssh can't connect to remote due to REMOTE HOST IDENTIFICATION HAS CHANGED

SSH can't connect to remote: "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!" After rebuilding the remote server, ssh can't make connection to remote server with following messages λ ssh -o ServerAliveInterval=60 root@10.202.0.150 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:cESEZr5cIIDf+uqksrYo+G34m5xm3gu6irysqQbLGN0. Please contact your system administrator. Add correct host key in /c/Users/alex.joh/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /c/Users/alex.joh/.ssh/known_hosts:13 ECDSA host key for 10.202.0.150 has changed and you have requested strict

Kong docker container exits with 132 error code without any message

Docker Container Exited (132) I was building entire Devops environment with ansible automation and suddenly Kong stack didn't start properly.  The problem was that the Dev server was old Dell Server and it doesn't support "sse4_2" feature from CPU. What is SSE Technology? SSE is a processor technology that enables single instruction multiple data. ... SSE is designed to replace MMX™ Technology. It expanded over the generations of Intel® Processors to include SSE2, SSE3/SSE3S, and SSE4. Each iteration has brought new instructions and increased performance. Information from CPUInfo  [root@dockerdv01 ~]# cat /proc/cpuinfo | grep sse4_ flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes hypervisor lahf_lm ts

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

Image
Introduction From this series, all folder structure will be followed from the previous Multi environment stucture. The steps to create VMs are; Create Inventory file Create Variables Shared variables Group variables Create Ansible Playbook Creating VMs from CentOS Template Set Network interface Add MAC Address to dhcpd.conf Reboot Reference Github code Folders/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

Ansible with automation(9) - Multi Environment Architecture

Image
Introduction Until 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. Architecture From 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 ab

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

Introduction Most 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 command Folder 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-Ad

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

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

Running command on remote I 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 computer Need to install pexpect using pip program In my case, remote computer name is "docker01" and local computer name is "ns01". However, I recommend to install "pexpect" package on both computer Reference Github code Install 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 overview Before 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 file filename 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 file filename 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 [a

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. Reference DDNS Reference DDNS Reference Steps to implement DDNS DNS setting dns domain name: svcdmztest.flair.local hostname: nsdmz01 ip: 10.201.0.30 Setup steps Install BIND, Bind-utils, and DHCP Generate Key (HMAC-SHA256 doesn't work this this version) Configure DNS(BIND) settings Configure DHCP settings Add filewall rules Modify nameserver Start 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 HMA

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

Change and Manage IP from cloned VM There 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 this Running DHCP from ansible host Add ssh key to CentOS template to change configuration Preparing YAML Clone from template Read cloned mac address Add mac address to ansible dhcpconfig and assign ip address with static lease Start cloned copy Update hostname on the cloned copy 1) setup DHCP on ansible host Installing 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

Use bitbucket as private Maven repository

Image
Introdcution I'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 Steps Generate ssh key Upload the key to bitbucket setting Test bitbucket ssh connection Create Repsository in Bitbucket Add plugin to pom.xml Add repository to pom.xml Add distributeManagement to pom.xml Set login and password for the git protocol There 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 key Run ssh-keygen to generate id_rsa.pub key $ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the ke