ansible tutorial installation
Ansible 모듈을 사용한 Ansible 설치, 사용 및 구성에 대한 실습 Ansible 자습서 :
우리는 AWS Elastic Beanstalk 이전 튜토리얼에서.
이 Ansible 시리즈의 자습서 목록 :
튜토리얼 # 1 : Ansible 설치 및 모듈
튜토리얼 # 2 : Ansible 플레이 북 및 Vault
튜토리얼 # 3 : Ansible 역할 및 Jenkins와의 통합
Ansible은 작업 자동화, 애플리케이션 배포, 클라우드 프로비저닝 및 구성 관리에 도움이되는 오픈 소스 도구입니다.
또한 읽기 => DevOps 교육 자습서 목록
그래서 우리는 여러 다른 컴퓨터 또는 서버에서 작업이 순서대로 실행되는 IT 오케스트레이션에 대해 이야기하고 있습니다.
Ansible은 SSH를 통해 여러 머신에 연결하여이를 수행하고 플레이 북으로 구성된 작업을 실행하고 다음과 같은 간단한 언어를 사용합니다. YAML (다른 마크 업 언어) .
학습 내용 :
Ansible 개요
가장 중요한 것은 Ansible이 에이전트를 사용하여 다른 머신에서 작업을 자동화하지 않는다는 것입니다.
Ansible은 소프트웨어 패키지에 대한 정확한 버전과 최신 정보를 유지합니다.
예를 들어 , 10 개 또는 20 개의 다른 컴퓨터에 JDK 8 또는 Tomcat 또는 기타 소프트웨어 패키지를 설치하려는 경우 실제로 모든 컴퓨터로 이동하여 설치하는 것은 불가능합니다. 대신 Ansible을 사용하여 설치를 자동화하거나 플레이 북 및 인벤토리를 사용하는 소프트웨어 배포 매우 간단한 언어로 작성되었습니다.
따라서 Ansible은 다음과 같습니다.
- 무료 및 오픈 소스
- Redhat에서 유지 관리
- 기본적으로 서버 구성
- 구성 관리
3 부로 구성된이 Ansible 자습서 시리즈에서는 다음 주제에 대한 실습 접근 방식에 대해 설명합니다.
- 설치 및 구성 프로세스
- 목록
- Ansible 모듈
- 임시 명령,
- 플레이 북을 사용한 작업 자동화
- Ansible 역할
- Ansible Vault
- Ansible 및 AWS
Ansible 설치 프로세스
Ansible은 모든 시스템에서 설치 및 실행할 수 있습니다.
일반적으로 다음이 필요합니다. 제어 기계 Linux 여야하는 설치용. Windows 시스템은 제어 시스템을 지원하지 않습니다. 제어 기계는 다른 원격 기계를 관리합니다. 앞서 언급했듯이 Ansible은 SSH를 사용하여 원격 머신을 관리합니다.
이 자습서에서는 AWS EC2 인스턴스를 사용하여 예제를 보여 드리겠습니다. 2 개의 인스턴스 (하나의 제어 머신과 다른 하나는 작업 자동화를위한 대상)와 Redhat Linux 7.5를 사용했습니다.
온 프레미스 또는 클라우드 인스턴스에 관계없이 자동화되는 작업에 따라 적절하게 포트를 열어야합니다. 자습서에 언급 된 예제를 보여주기 위해 EC2 인스턴스에 대한 보안 그룹의 일부로 다음 포트가 열려 있습니다.
위 화면에서는 특히 지속적 배포 프로세스 중에 DevOps의 관점에서 유용 할 Tomcat을 사용한 소프트웨어 배포 자동화 자동화에 대해 보여 주면서 포트 8080을 여는 것에 대해 언급했습니다.
YUM을 사용하여 Ansible 설치
앞에서 언급했듯이 하나의 제어 기계와 대상 기계를 사용할 것입니다. 설치를 시작하려면 두 시스템에서 아래 표시된 단계를 수행하십시오.
에) 두 컴퓨터에서 공통 ID를 만듭니다. 예 , ansible SUDO 권한으로. 이 ID는 작업 자동화에 관련된 모든 시스템에서 통신하는 데 사용됩니다.
# useradd ansible # passwd ansible
비) 편집 / etc / ssh / sshd_config 파일에 제어 기계 다음 줄의 주석 처리를 제거하십시오. PasswordAuthentication 및 PermitRootLogin
두 컴퓨터에서 위의 단계를 수행합니다. 완료되면 sshd 두 컴퓨터에서 서비스를 제공합니다.
# systemctl restart sshd
씨) 작업을 완전히 자동화하려면 암호없는 SSH 인증이 필요합니다. 그렇지 않으면 매번 암호를 입력해야하는 경우 전체 프로세스가 사용되지 않습니다.
따라서 ssh 및 ssh 명령을 실행하면 위의 변경 사항을 게시하면 Ansible 작업을 실행하는 올바른 절차가 아닐 때마다 암호를 입력해야합니다.
디) 암호없는 인증을 활성화하려면 아래 표시된 단계를 수행하십시오. 먼저 사용자 추가 ansible ~로 / etc / sudoers 사용자를 활성화 할 두 시스템의 파일 ansible 루트 권한이 필요한 명령을 실행합니다.
사용자를 추가 한 후 파일을 저장하고 종료하십시오.
이다) 앞으로 우리는 사용자를 사용할 것입니다 ansible 모든 단계를 수행합니다. 따라서 사용자로 전환하십시오. ansible.
제어 기계 su – ansible AND 타겟 머신 su-ansible
제어 기계 ssh-keygen
타겟 머신 ssh-keygen
ssh 키를 대상 컴퓨터에 복사하거나 그 반대로 복사합니다.
제어 기계 ssh-copy-id
타겟 머신 ssh-copy-id
이제 비밀번호를 입력하지 않고 로그인 할 수 있습니다. 두 컴퓨터에서 ssh 연결을 확인한 후 ansible 사용자로 로그인합니다.
제어 기계 : ssh ansible @
타겟 머신 : ssh ansible @
에프) 두 시스템에 모두 설치되지 않은 경우 wget을 설치하십시오.
$ sudo yum install wget -y
지) 이제 설치할 수 있습니다. ansible 제어 시스템에서만 애드온 소프트웨어 패키지를 제공하는 fedora에서 EPEL 리포지토리를 활성화합니다. 설치하려면 다음 단계를 수행하십시오. ANSIBLE.
$ wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm $ sudo rpm -ivh epel-release-latest-7.noarch.rpm $ sudo yum install ansible -y $ ansible --version
사용 된 ansible 버전은 2.5.3입니다.
h) 편집 ansible.cfg 파일을 열고 제어 시스템에서 인벤토리 파일 매개 변수를 활성화합니다.
$ sudo vi /etc/ansible/ansible.cfg
나는) Ansible은 인벤토리 개념을 사용하여 대상 머신을 관리하고 추적합니다. 기본적으로이 파일은 다음 위치에 있습니다. / etc / ansible / hosts 변경 될 수도 있습니다. 호스트 파일은 더 나은 분류를위한 그룹과 그룹 아래의 여러 시스템으로 구성됩니다. 필요한 모든 컴퓨터를 해당 그룹에 추가 할 수 있습니다.
모든 그룹은 대괄호와 그 안의 그룹 이름으로 표시됩니다. 서버는 실제로 여러 그룹에 존재할 수 있습니다.
인벤토리 파일 편집 / etc / ansible / hosts 관리해야하는 모든 서버를 추가합니다.
제이) 웹 서버 그룹 아래의 서버 연결을 테스트하려면 ansible 핑 표시된대로 명령. 여기 핑 인벤토리 파일에 정의 된대로 호스트가 연결될 수 있는지 여부를 테스트하는 특정 기능을 수행하는 모듈입니다. 다음 섹션에서 다양한 모듈과 그 예제에 대해 더 많이 볼 것입니다.
$ ansible webservers –m ping
인벤토리 파일의 호스트를 나열하려면 아래 명령을 실행할 수 있습니다.
$ ansible webservers --list-hosts
Ansible 사용
Ansible은 3 가지 주요 구성 요소로 구성됩니다.
- 제어 기계
- 목록
- 플레이 북
제어 기계는 플레이 북의 실행을 관리합니다. 랩톱이나 인터넷의 모든 컴퓨터에 설치할 수 있습니다.
인벤토리 파일은 ssh 연결을 수행하고 필요한 소프트웨어를 설치하여 다양한 모듈이 실행되는 모든 대상 시스템의 전체 목록을 제공합니다.
플레이 북은 인벤토리 파일에 정의 된 서버에서 제어 메커니즘이 수행하는 단계로 구성됩니다.
여기서 이해해야 할 매우 중요한 점은 Ansible이 안전한 원격 로그인 방법 인 SSH 프로토콜을 통해 인벤토리에 정의 된 모든 서버와 상호 작용한다는 것입니다. 모든 작업이 완료되고 파일 전송이 암호화됩니다.
따라서 이전 섹션에서 보았 듯이 Ansible은 설치에 어떤 종류의 데이터베이스도 사용하지 않으며 설치가 매우 쉽습니다. 이제 기본 빌딩 블록 인 모듈부터 시작하여 Ansible의 실제 사용을 진행합니다.
Ansible 모듈
모듈은 Ansible의 주요 구성 요소이며 기본적으로 Ansible 플레이 북에서 사용되는 재사용 가능한 스크립트입니다. Ansible은 재사용 가능한 여러 모듈과 함께 제공됩니다. 여기에는 서비스 제어, 소프트웨어 패키지 설치, 파일 및 디렉토리 작업 등의 기능이 포함됩니다.
단일 또는 단순 작업을 한 번만 실행하고 나중에 실행할 필요가없는 임시 명령을 실행하는 동안 구문은 다음과 같습니다. 에 대한 예 : 모든 서버에 Tomcat을 설치하기 만하면됩니다.
ansible hostORgroup -m module_name -a 'arguments' -u username --become
가장 인기있는 Ansible 모듈과 애드혹 명령을 통한 사용법 및 나중에 플레이 북에서 살펴 보겠습니다.
# 1) 설정 모듈
네트워크 또는 하드웨어 또는 OS 버전 또는 메모리 관련 정보에 대한 정보를 얻으려면 설정 모듈이 대상 컴퓨터에 대해 동일한 정보를 수집하는 데 도움이됩니다. 제어에서 기계는 아래 명령을 실행합니다.
$ ansible webservers –m setup
# 2) 명령 모듈
명령 모듈은 단순히 대상 시스템에서 특정 명령을 실행하고 출력을 제공합니다.
아래에 몇 가지 예가 나와 있습니다.
$ ansible webservers –m command - an ‘uptime’ $ ansible webservers –m command –a ‘hostname’
# 3) 쉘 모듈
선택한 쉘에서 명령을 실행하려면 쉘 모듈을 사용할 수 있습니다. 셸 모듈 명령은 / bin / sh 셸에서 실행되며‘>’또는‘|’(파이프 기호 또는 환경 변수까지도)와 같은 연산자를 사용할 수 있습니다.
따라서 주로 Shell과 Command 모듈의 차이점은 언급 된 것과 같은 연산자를 실제로 사용할 필요가 없다면 명령 모듈을 사용할 수 있다는 것입니다.
$ ansible webservers -m shell -a 'ls -l > temp.txt'
webservers 그룹의 컴퓨터에서 생성 된 파일을 확인하고 명령을 실행하여 텍스트 파일을 봅니다.
$ ansible webservers –m command -a ‘cat temp.txt’
# 4) 사용자 모듈
이 모듈을 사용하면 사용자를 만들거나 삭제할 수 있습니다.
사용자를 추가하려면
$ ansible webservers -m user -a 'name=user1 password=user1' --become
사용자를 삭제하려면
$ ansible webservers -m user -a 'name=user1 state=absent' --become
옵션 :
- 지다 – 명령을 실행할 수있는 수퍼 유저 권한
- state = absent 사용자를 삭제하려면
# 5) 파일 모듈
이 모듈은 파일, 디렉토리 생성, 파일 권한 및 소유권 설정 또는 변경에 사용됩니다.
예 1 : 파일 생성
$ ansible webservers -m file -a 'dest=/home/ansible/niranjan.txt state=touch mode=600 owner=ansible group=ansible'
예 2 : 디렉토리 생성
파일 모듈을 사용하여 디렉토리를 생성하려면 두 개의 매개 변수를 설정해야합니다.
- Path (alias – name, dest) – 생성 될 디렉토리의 절대 경로입니다.
- 상태 – 값은 '디렉토리'로 입력해야합니다. 기본적으로 값은 '파일'입니다.
$ ansible webservers -m file -a 'dest=/home/ansible/vndir state=directory mode=755'
예 3 : 파일 삭제
$ ansible webservers -m file -a 'dest=/home/ansible/niranjan.txt state=absent'
예 4 : 디렉토리 삭제
상태 매개 변수 값을 다음과 같이 설정하여 디렉토리를 삭제할 수 있습니다. 결석 . 디렉토리와 모든 내용이 삭제됩니다.
$ ansible webservers -m file -a 'dest=/home/ansible/vndir state=absent'
# 6) 모듈 복사
여러 대상 머신에 파일을 복사하는 데 사용됩니다.
$ ansible webservers -m copy -a 'src=sample.txt dest=/home/ansible/sample.txt'
# 7) 소프트웨어 패키지 관리
'yum'또는 'apt'를 통해 소프트웨어 패키지를 설치해야하는 경우 아래 명령을 사용할 수 있습니다.
예 1 : GIT 설치
$ ansible webservers –m yum -a “name=git state=present” --become
오른쪽 창에서 git이 설치되어 있지 않으면 찾을 수없는 명령이 표시되고 설치되면 출력이 표시됩니다.
이 명령에서 state = present 패키지가 설치되어 있는지 확인하고 설치되지 않은 경우 최신 버전을 설치합니다.
예 2 : 패키지가 설치되어 있는지 확인하고 최신 버전으로 업데이트하십시오.
$ ansible webservers -m yum -a “name=git state=latest”
위의 명령에서 state = 최신 패키지를 최신 버전으로 만 업데이트합니다.
예 3 : Apache Webserver 설치
$ ansible webservers -m yum -a 'name=httpd state=present' –become
예 4 : Maven이 설치되어 있는지 확인하십시오.
$ ansible webservers -m yum -a 'name=maven state=absent' –become
# 8) 서비스 관리 모듈
ansible로 서비스를 관리하기 위해 우리는 모듈을 사용합니다. '서비스'.
서비스 시작
$ ansible webservers -m service -a “name=httpd state=started” --become
서비스 중지
$ ansible webservers -m service -a “name=httpd state=stopped” --become
서비스 다시 시작
$ ansible webservers -m service -a “name=httpd state=restarted --become
딸깍 하는 소리 여기 전체 모듈 목록을 얻으려면.
xml 파일을 여는 방법
요약
이 튜토리얼에서는 Ansible의 기본 개념과 구성 요소를 소개했으며 Ansible 실행의 주요 구성 요소 인 Ansible 모듈의 도움으로 Ansible의 설치, 구성 및 사용에 대해 자세히 살펴 보았습니다.
다음 자습서에서는 중요한 데이터를 암호화 된 파일에 보관하기위한 작업 자동화 및 Ansible 볼트를위한 플레이 북 작성의 매우 중요한 측면에 초점을 맞출 것입니다.