IMPLEMENTATION OF DEVOPS METHOD FOR AUTOMATION OF SERVER MANAGEMENT USING ANSIBLE

The Development and Operations (DevOps) method is develops tasks that are operationalized by IT staff including server management. DevOps is a server, coding, and tester bridge so that it can be activated automatically so that the programmer does not need to do it repeatedly. Server management is still mostly done manually by doing repetitive settings on one server and another server so that it is inefficient and requires a relatively long time, the solution by adding several employees will increase the work of making users and user management on all servers, the occurrence of human errors and burdens costs for the company. Ansible is one type of configuration management tools that can be used for the infrastructure management process from a manual program to an automatic. In this study the implementation and testing of Ansibel was done in server management. Ansibel can configure and manage user account settings on all servers automatically.


Introduction
The increasing need for information will increase the hardware requirements to be used such as servers. The server is a type of computer that is used as an information service provider and client management. Increasing server requirements will complicate administrators in server management [1]. Quite often and it has become common if one server administrator holds more than one server. Of course, it will be more difficult for administrators if they do not have server knowledge and management.
Servers and networks have network devices that must be configured. The configuration is needed so that each server can be connected and able to manage clients. The network device is a network device used to connect one device to another device. In some companies in the management of the server is still applying the manual method by doing repetitive settings on one server and another server so that management is not good enough and requires a relatively long time because the activities carried out on server one are carried out again on the next server. The solution by adding several employees will increase the work of user creation and user

Research Method
In the implementation of Ansible for automation of server management with several stages as follows.

Requirements Analysis
The requirements analysis phase is the initial stage in the system development model. In this study the user will configure a server where the configured packets are supported and ansible system on the control server. Before configuring it is first necessary to connect Ubuntu via SSH (Secure Shell). SSH is a cryptographic network protocol for secure data communication, command line interface logins, remote execution commands, and other network services between two computer networks. This is connected, through a secure channel or through an insecure network, the server and client run the SSH server and SSH client program respectively [13].
In the development of centralized management server, Ansible required main and supporting software so that the server management that is built can run well. The selection of this software is based on existing system and hardware requirements. The operating system used in this study is ubuntu 12.05 LTS ubuntu server which supports x86 / 32 bit processors. In the Ubuntu server installation process is not included in the application to support the server, the application is added so that the server can run. The hardware used in this final project is one server for control and three computers as remote servers and hubs/switches. From the research that has been done, there is an important relationship between the components of computer software (software), possible, and the device to be automated, an explanation of the relationship, and how to work of the components in Figure 1.  Figure. 1. Architecture Ansible management node

Server
In Figure 1 is the relationship between software and other software or devices. Ansible will use SSH to remotely configure the server. SSH will ensure that Anonfiguration is the right destination. In this study, using 3 servers with different IPs.

Implementation of Automation System
The implementation phase is the stage where the design of the existing system is translated into computer language. To configure via ansible using 2 programming languages namely YAML and python. Here is the flow of the implementation of Centralized Management Server as a whole: a. Ansible Installation In this process the operating system used for the Server is Ubuntu Server 16.04 LTS. Before installing Ansible on the server, first verify the server details such as hostname and IP Address.  After being installed before the configuration is possible, ansible connection requires SSH. For that, SSH configuration first.

b. Generating SSH Keys
To do the management from the control server to the server that is remotely must first create an SSH key. First, create an SSH key by using the command. $ ssh-keygen -t rsa  Now the public key has been copied on the first remote server, and proceed to the second server. With the command ssh-copy-id sinet@192.168.8.198 Figure. 6. Copying SSH key to the second Remote Server After copying all SSH Keys to the remote server, now authenticate the ssh key on all remote servers to check whether the authentication is working or not. With the command $ ssh sinet@192.168.8.35 Figure. 7. SSH Key Authentication on the First Server Authentication on the first server has been successfully performed by seeing the hostname is sinet @ sinet-portal no longer sinet @ sinet-video. Enter the "exit" command to exit the first server. And now authenticate on the second server. With the command $ ssh sinet@192.168.8.198 Figure. 8. SSH Key Authentication on Second Server Authentication on the third server was also successful, now exit and continue configuration on the dick server that has Ansible installed.
c. Configuring File Hosts on Ansible Now edit the File hosts to manage the server. This hosts file holds server information such as the server needed to get a local to remote connection. The hosts file is located in / etc / ansible / hosts. Now to edit the host file with the command. $ vim / etc / ansible / hosts then add two server IP addresses: Figure. 9. Entering the server IP into the File Ansible "Dc1-server" in parentheses indicates the name of the group, used to classify the system and determine the system to be controlled.

Testing Scenarios
To be able to manage the server properly you can use a script with the .yml extension. This script works to do something complex with the help of ansible Playbook. Ansible Playbook is very useful if we want to carry out direct orders. The first testing is checking the connection and configuration of ansibel, by checking the server access that has been registered, then checking the server partition, checking the memory usage on the server, checking the time up on the server, checking the hostname on the server, creating a directory on the server, dividing server group, check the user login on the server and check the server is on or off. The second testing is create users account by automatically on several servers and check the user usage that has been made.

Results and Analysis
In To manage the server, first check the server connection by executing the command $ ansible dc1-server -m ping.  Figure. 10. Check the server connection The results of the connection check in Figure 10, dc1-server is the name of the host group that has been registered in / etc / ansible / hosts, then -m is the command to run the module that has been provided by ansible server management software, ping is the command to find out the server that has been registered can be accessed from ansible.

3.1.
Initial checking of all servers on ansible There are several checking on all servers with Ansible, including checking the server partition can use the command $ ansible dc1-server -m shell -a "df -h". Figure 11 shows that the partition was successful.

Figure. 11. Check All Server Partitions
Next, checking the memory usage on the server, can be done by executing the command $ ansible dc1-server -m shell -a "free". In Figure 12 shows the results of memory usage on each server.

Figure. 12. Check All Server Memory Usage
Checking the time up on the server, can be done by executing the command $ ansible dc1-server -m shell -a "uptime". Figure 13 can be seen the number of users and the average load on each server. Checking the hostname on the server can be done by executing the command $ ansible dc1-server -m shell -a "uname -a". Creating a directory on the server, can be done by executing the command $ ansible dc1-server -m shell -a "mkdir test". This will create a folder called test that will exist on all servers. Then to check the folders that have been successfully created on all servers using $ ansible dc1-server -m shell -a "ls". Figure 14 shows the test folder has been successfully created on all servers. Figure. 14. Viewing the Directory Divide of server groups by using the sign "[]" as a separator for each group, in each group we can add many servers at once. This serves to differentiate the server based on needs, to change it we can use the command $ vim / etc / ansible / hosts. Figure 14 shows the dividing of server groups 1 and server 2. User login checking on the server is done by executing the command $ ansible dc1-server -m shell -a "who". Figure 16 shows that user sinet is entered on all servers.  Figure. 16. User login checking on the server Checking the server is off or on in the dc1-server1 group is done by executing the command $ ansible dc1-server1 -m "ping". And in the dc1-server2 group with the command $ ansible dc1-server2 -m "ping". Figure 17 shows that the servers in the dc1-server1 group and the servers in the dc1-server2 group are all on. Figure. 17. Checking the server is on

Create users account by automatically on several servers
To be able to manage the server properly you can use a script with the .yml extension. This script works to do something complex with the help of Ansible Playbook. An impossible playbook is very useful if you want to do many operations directly. An example is used here by creating a user on all servers with an enabled playbook. First, create a yml script to make an possible playbook, to do it using the $ vim create-user.yml command root @ sinet-video: / home / sinet # vim create-user.yml -hosts: all become: yes vars: password: $ 1 $ SomeSalt $ aIJ0bvHJBSYd307VQuuD90 tasks: -user: name = unkristest password = {{password}} state = present ~ After creating the script, then run the script with the command $ ansible-playbook createuser.yml -ask-become-pass  Figure 18 shows an Ok status that indicates that the user was successfully created. After creating a user, can check the unkristest user that has been created with the command $ ansible all -m shell -a "cat / etc / passwd | grep unkristest" Figure. 19. Successful Anbook Playbook Script Figure 19 shows users who have been successfully created and network admins can easily manage the server and users available on each server.

Conclusion
The results of the study it can be concluded several things including. Automation carried out by utilizing ansible is successfully used to repeatedly configure and manage servers on multiple servers. Ansible was successfully implemented starting the connection test, partitioning, server IP group division, login checking. Management of creating users on several servers is successful automatically so that users are available on each server. By utilizing ansible existing processes will be executed at once in sequence. The application of the DevOps method makes the work process of delivering and managing information much more practical and faster. Effective and efficient server management requires the right method. It is hoped that in the next research it will be possible to develop an enabling system to configure multiple systems through multiple accesses such as mobile or web.