Ansible:Enders 게임
구성 관리
구성 관리의 목적은 시스템을 필요한 상태로 유지하는 것이다.그 목적은 가능한 한 설정 표류를 없애는 것이다.
임시 설정 변경과 업데이트로 인해 개발, 테스트, 배치 환경이 일치하지 않을 때 설정 표류가 발생합니다.엄격한 규정 준수 기준을 충족해야 하는 애플리케이션과 서비스를 개발하면 배포 문제, 보안 취약점 및 위험이 발생할 수 있습니다.
구성 관리는 직원이나 업무량을 늘릴 염려 없이 인프라 확장을 가능하게 합니다.이는 모든 인프라의 일관성을 확보하고 자동화 수준을 높이며 인위적인 오류를 감소시킵니다.
Ansible 회사
Ansible은 매우 강력하고 유행하는 구성 관리 도구입니다.다음은 Ansible에 관심을 가지게 하는 몇 가지 빠른 사실입니다.
우술라.
거대하고 복잡한 원양 함대를 통제하다.이게 뭐야?
Ansible Automatic Software 설립자가 다음 용어를 선택했음을 알립니다.
그들의 제품 이름.
Ansible is an agentless push-based configuration tool that
functions by connecting via SSH to its managed nodes. It doesn’t need
a special agent on the node and operates by pushing modules to the
clients. The modules are then executed locally on the node, and the
output is pushed back to the controller or host.
표류는 동기화 버전과 다르게 호스트에서 변경하는 과정입니다.
데모 노드:
Ansible 설치:
1단계: 패키지 업데이트
sudo apt update
2단계: 소프트웨어 속성 공통 패키지 설치 sudo apt install software-properties-common
3단계: ansible 개인 패키지 아카이브 추가sudo apt-add-repository ppa:ansible/ansible
4단계: ansible 설치 sudo apt install ansible
설치를 테스트하려면 다음과 같이 하십시오.ansible --version
Ansible 즉석 명령:
이것은 Ansible가 하나 이상의 서버에서 특정 명령을 실행하는 데 가장 간단한 방법 중 하나입니다.임시 명령은 버전에 의해 제어되지 않지만 필요한 서버와 상호작용하는 빠른 방식을 나타낸다.
ansible -m ping localhost
-m==> 모듈Ping==> 모듈 이름
로컬 호스트 ==> 대상 노드
ansible -m copy -a 'src=./file1.txt dest=~/file.txt' localhost
일부 변경 사항이 실행되는지 확인하려면 시험적으로 실행하십시오.명령에 "-check"을 추가합니다.구현할 변경 사항을 보려면 "-diff"를 추가하십시오.변경 사항을 지적한 후,diff 로고는 단독으로 변경됩니다.멱등성:
This is an IaC property that ensures a defined infrastructure
deployment sets the target environment to the desired state, every
time it is run, regardless of its starting state. The IaC provider
will decide what needs to be stood-up, torn down or reconfigure to
match your described target state.
Ansible 시나리오
ansibleplaybook은 ansible를 사용하여 임무를 수행하는 더욱 읽을 수 있고 버전화되기 쉬운 방식이다.즉석 명령에 비해 대본은 복잡한 장면에 사용되기 때문에 더욱 높은 유연성과 능력을 제공한다.대본은 YAML 형식을 사용하기 때문에 문법이 많이 필요하지 않지만 들여쓰기 규칙이 엄격하다.Ansible 시나리오는 종종 프로그래밍 언어가 아니라 설정 언어와 같다.
Like its name, a playbook is a collection of plays. A play is a set of
orchestration instructions.
---
#ansible -m copy -a “src=./file1.txt dest=~/file1.txt” localhost
- name: Play name
hosts: localhost
tasks:
- name: Copy a file
copy:
src: ./file1.txt
dest: ~/file1.txt
의도
If the action you desire requires root/sudo, use the ‘Become’ keyword
for privilege escalation.
변동 재고
Ansible은 관리되는 호스트를 식별하기 위해 리소스 팜플렛을 사용합니다.기본 호스트 파일은 다음과 같습니다.
/etc/ansible/hosts
여기서 노드, 노드 별명, 노드 그룹과 변수를 정의할 수 있습니다.사용자가 만든 가상 시스템의 IP 주소를 사용하여 그룹을 만듭니다.[master]
host1 ansible_host=192.168.100.2 ansible_user=agent ansible_password=password@101
[agents]
node1 ansible_host=192.168.100.3 ansible_user=agent ansible_password=password@101
node2 ansible_host=192.168.100.4 ansible_user=agent ansible_password=password@101
"ansible inventory"명령은 위탁 관리 노드를 처리하는 데 사용됩니다.모든 노드의 전체 목록을 보려면 다음을 입력합니다.
ansible-inventory --list
보다 그래픽화된 레이아웃을 얻으려면 다음을 사용합니다.ansible-inventory --graph
@localhost 현재/제어 노드
@all 모든 노드
@group_name 은 그룹 내의 모든 노드를 대상으로 합니다.
[all:vars]
ansible_user=agent
ansible_password=password@101
[master]
host1 ansible_host=192.168.100.2
[agents]
node1 ansible_host=192.168.100.3
node2 ansible_host=192.168.100.4
참고: Ansible는 암호를 사용하여 이 시스템과 SSH 연결을 설정하기 때문에 "sshpass"를 설치해야 합니다.sudo apt install sshpass -y
ping 명령을 사용하여 호스트를 테스트해 보겠습니다.ansible -m ping all
우리에게 잘못을 하나 주었다.ansible 설정을 수정해야 합니다.Ansible CFG
Ansible 구성 파일이 원하는 것입니다.위치:
/etc/ansible/ansible.cfg
우리는 그것을 열고 설정을 수정해야 한다.파일을 열고 메모를 취소하려면: host_key_checking = false
그것을 입력하든지.이제 ping 명령을 실행할 수 있습니다.
ansible -m ping all
대본을 쓰다
파일을 만들려면 다음과 같이 하십시오.
touch playbook.yml
다음 항목을 열고 추가합니다. ---
- name: play one - install vim from custom inventory
hosts: agents
become: true
tasks:
- name: apt
apt:
name: vim
state: latest
- name: zsh install
apt:
name: zsh
state: latest
- name: vagrant install
apt:
name: vagrant
state: latest
- name: nodejs install
apt:
name: nodejs
state: latest
- name: play two server config
become: true
hosts: master
tasks:
- name: ensure Nginx is at latest
apt:
name: nginx
state: latest
- name: start server
service:
name: nginx
state: started
저장합니다.극본을 집행하다
우리가 방금 쓴 대본을 실행하기 위해서, 우리는 "ansible playbook"명령을 사용합니다.입력:
ansible-playbook playbook.yml -v
지루하다v가 클수록 출력의 디테일이 많아진다.우리는 사용자 정의 재고 파일에서 시나리오를 실행할 수도 있다.
사용자 정의 인벤토리 파일을 만듭니다.
touch inventory
노드를 추가합니다.Ping은 다음과 같은 방법으로 테스트합니다.
ansible -I inventory -m ping all
다음 내용으로 시나리오를 작성합니다.ansible-playbook -I inventory playbook.yml
VM 종료
이제 마지막 프레젠테이션으로 추가 비용을 피하기 위해 가상 머신을 종료합니다.ansible가 여러 가지 일을 할 수 있다는 것을 알았으니, 우리는 그것으로 이 시범을 보일 것이다.
당신은 이 때문에 YAML 스크립트를 작성할 수 있습니까?일단 해봐.이것은 매우 간단하다.
---
- name: shut down all my agent VMs
hosts: all
become: true
tasks:
- name: run shutdown command
command: shutdown
저장 및 실행:
ansible-playbook shutdownVMs.yml -vv
Azure Cloudshell의 Ansible
Azure Cloudshell은 Ansible 즉석 명령과 시나리오를 실행하는 데 필요한 모든 것을 갖추고 있습니다.다음은 Azure Cloudshell의 기본 리소스를 사용하여 VM을 만듭니다.
액세스HTTP://portal.azure.com 및 Cloudshell을 엽니다.Bash를 선택하고 다음 내용을 입력하여 포함된 VS 코드 편집기를 엽니다.
code .
편집기에서 azvmplaybook을 만듭니다.yml 및 내부에 다음을 붙여넣습니다.
- name: Create Azure VM
hosts: localhost
connection: local
tasks:
- name: Create resource group
azure_rm_resourcegroup:
name: myResourceGroup
location: eastus
- name: Create virtual network
azure_rm_virtualnetwork:
resource_group: myResourceGroup
name: myVnet
address_prefixes: "10.0.0.0/16"
- name: Add subnet
azure_rm_subnet:
resource_group: myResourceGroup
name: mySubnet
address_prefix: "10.0.1.0/24"
virtual_network: myVnet
- name: Create public IP address
azure_rm_publicipaddress:
resource_group: myResourceGroup
allocation_method: Static
name: myPublicIP
register: output_ip_address
- name: Dump public IP for VM which will be created
debug:
msg: "The public IP is {{ output_ip_address.state.ip_address }}."
- name: Create Network Security Group that allows SSH
azure_rm_securitygroup:
resource_group: myResourceGroup
name: myNetworkSecurityGroup
rules:
- name: SSH
protocol: Tcp
destination_port_range: 22
access: Allow
priority: 1001
direction: Inbound
- name: Create virtual network interface card
azure_rm_networkinterface:
resource_group: myResourceGroup
name: myNIC
virtual_network: myVnet
subnet: mySubnet
public_ip_name: myPublicIP
security_group: myNetworkSecurityGroup
- name: Create VM
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: myVM
vm_size: Standard_DS1_v2
admin_username: agent
admin_password: password@101
network_interfaces: myNIC
image:
offer: UbuntuServer
publisher: Canonical
sku: '18.04-LTS'
version: latest
공을 스크롤하려면 Cloudshell에서 다음을 수행합니다.
ansible-playbook azvmplaybook.yml
잠깐만...
완료되면 리소스 그룹으로 이동하여 확인하십시오.생성된 VM에 SSH를 연결할 수도 있습니다.놀고 난 후에 우리는 우리의 궤적을 정리해야 한다.편리한 것은 우리의 자원 그룹을 삭제하기만 하면 창설된 모든 자원을 가져갈 수 있다는 것이다.우리 이렇게 합시다.rmrgplaybook을 만듭니다.yml:
---
- hosts: localhost
tasks:
- name: Deleting resource group
azure_rm_resourcegroup:
name: myResourceGroup
state: absent
force_delete_nonempty: yes
여기에서 force\u delete\u nonempty 로고를 yes로 설정하여 모든 하위 자원을 삭제할 수 있도록 합니다.
이제 구현:
ansible-playbook rmrgplaybook.yml
Thanks for your time!
Reference
이 문제에 관하여(Ansible:Enders 게임), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/udujoel/ansible-from-enders-game-to-ending-drift-ofj
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
---
- name: shut down all my agent VMs
hosts: all
become: true
tasks:
- name: run shutdown command
command: shutdown
ansible-playbook shutdownVMs.yml -vv
Azure Cloudshell은 Ansible 즉석 명령과 시나리오를 실행하는 데 필요한 모든 것을 갖추고 있습니다.다음은 Azure Cloudshell의 기본 리소스를 사용하여 VM을 만듭니다.
액세스HTTP://portal.azure.com 및 Cloudshell을 엽니다.Bash를 선택하고 다음 내용을 입력하여 포함된 VS 코드 편집기를 엽니다.
code .
편집기에서 azvmplaybook을 만듭니다.yml 및 내부에 다음을 붙여넣습니다.
- name: Create Azure VM
hosts: localhost
connection: local
tasks:
- name: Create resource group
azure_rm_resourcegroup:
name: myResourceGroup
location: eastus
- name: Create virtual network
azure_rm_virtualnetwork:
resource_group: myResourceGroup
name: myVnet
address_prefixes: "10.0.0.0/16"
- name: Add subnet
azure_rm_subnet:
resource_group: myResourceGroup
name: mySubnet
address_prefix: "10.0.1.0/24"
virtual_network: myVnet
- name: Create public IP address
azure_rm_publicipaddress:
resource_group: myResourceGroup
allocation_method: Static
name: myPublicIP
register: output_ip_address
- name: Dump public IP for VM which will be created
debug:
msg: "The public IP is {{ output_ip_address.state.ip_address }}."
- name: Create Network Security Group that allows SSH
azure_rm_securitygroup:
resource_group: myResourceGroup
name: myNetworkSecurityGroup
rules:
- name: SSH
protocol: Tcp
destination_port_range: 22
access: Allow
priority: 1001
direction: Inbound
- name: Create virtual network interface card
azure_rm_networkinterface:
resource_group: myResourceGroup
name: myNIC
virtual_network: myVnet
subnet: mySubnet
public_ip_name: myPublicIP
security_group: myNetworkSecurityGroup
- name: Create VM
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: myVM
vm_size: Standard_DS1_v2
admin_username: agent
admin_password: password@101
network_interfaces: myNIC
image:
offer: UbuntuServer
publisher: Canonical
sku: '18.04-LTS'
version: latest
공을 스크롤하려면 Cloudshell에서 다음을 수행합니다.ansible-playbook azvmplaybook.yml
잠깐만...완료되면 리소스 그룹으로 이동하여 확인하십시오.생성된 VM에 SSH를 연결할 수도 있습니다.놀고 난 후에 우리는 우리의 궤적을 정리해야 한다.편리한 것은 우리의 자원 그룹을 삭제하기만 하면 창설된 모든 자원을 가져갈 수 있다는 것이다.우리 이렇게 합시다.rmrgplaybook을 만듭니다.yml:
---
- hosts: localhost
tasks:
- name: Deleting resource group
azure_rm_resourcegroup:
name: myResourceGroup
state: absent
force_delete_nonempty: yes
여기에서 force\u delete\u nonempty 로고를 yes로 설정하여 모든 하위 자원을 삭제할 수 있도록 합니다.이제 구현:
ansible-playbook rmrgplaybook.yml
Thanks for your time!
Reference
이 문제에 관하여(Ansible:Enders 게임), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/udujoel/ansible-from-enders-game-to-ending-drift-ofj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)