Ansible을 사용하여 수행할 수 있는 Amazon Linux 2의 중요 설정
10743 단어 ec2ansibleawsamazonlinux2
Amazon Linux 2에 대해 자세히 알아보려면 here을 클릭하십시오!
그런 다음 Amazon Linux 2에 대한 "중요 설정"을 설정하려고 했습니까? 여기서는 서버를 "실제로"프로덕션용으로 사용하거나 호스트 웹 서버와 같은 목적으로 사용하기 전에 수행해야 할 기본 구성을 의미합니다. 5가지로 요약해봤습니다.
좋아, 내가 제목에서 언급했듯이. 이 5가지 모두 ansible로 수행할 수 있습니다. 우리 모두 알다시피 ansible은 구성 관리 도구이기도 합니다.
전제 조건:
AWS CLI 및 setup at least one credential ;
Ansible ;
ansible-galaxy collection install community.aws
를 실행하여 AWS에 대한 Ansible 수집. 그 전에 인스턴스를 시작하여 나중에 구성하겠습니다.
인벤토리: hosts.yml
---
localhost:
hosts:
127.0.0.1:
플레이북: ec2.yml
- name: launch new instance
amazon.aws.ec2_instance:
name: amazonlinux2
region: ap-southeast-3
key_name: ec2-user
instance_type: t3.micro
security_group: ssh-web
vpc_subnet_id: subnet-0276d466994fa3087
network:
assign_public_ip: true
delete_on_termination: true
image_id: ami-0de34ee5744189c60
volumes:
- device_name: /dev/xvda
ebs:
volume_size: 8
volume_type: gp2
delete_on_termination: true
tags:
- ec2_new
플레이북을 실행하세요!
$ ansible-playbook -i host.yml ec2.yml -t ec2_new
PLAY [ec2] **************************************************************************************************************************************************************
TASK [launch new instance] **********************************************************************************************************************************************
changed: [127.0.0.1]
PLAY RECAP **************************************************************************************************************************************************************
127.0.0.1 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
$ aws ec2 describe-instances --query 'Reservations[].Instances[].{ID:InstanceId, PrivateIP:PrivateIpAddress, PublicIP:PublicIpAddress, Name:Tags[?Key==`Name`].Value}'
[
{
"ID": "i-0187e4bb5d2f2007c",
"PrivateIP": "10.0.1.7",
"PublicIP": "108.136.226.235",
"Name": [
"amazonlinux2a"
]
},
{
"ID": "i-050cfb6ee36a57131",
"PrivateIP": "10.0.1.5",
"PublicIP": "108.136.225.50",
"Name": [
"amazonlinux2"
]
},
{
"ID": "i-09c46dba004ed7bd8",
"PrivateIP": "10.0.2.8",
"PublicIP": "108.136.235.232",
"Name": [
"amazonlinux2b"
]
},
{
"ID": "i-02c7573fff1215e65",
"PrivateIP": "10.0.3.11",
"PublicIP": "108.136.150.180",
"Name": [
"amazonlinux2c"
]
}
]
위에 나열된 인스턴스에서 IP 108.136.225.50의 amazonlinux2 인스턴스를 사용하겠습니다.
1. 업데이트
*
를 이름으로 사용하면 yum -y update
로 바뀝니다.- name: al2
hosts: new
become: true
gather_facts: no
tasks:
- name: update
yum:
name: "*"
state: latest
2. 패키지 설치
여기서는 간단한 웹 서버용 최신 httpd만 설치하겠습니다.
- name: install web server
yum:
name: httpd
state: latest
- name: install web server
service:
name: httpd
enabled: yes
- name: modify home page
shell: 'echo "Hello World!" >> /var/www/html/index.html'
3. 관리 사용자
ec2-user는 Amazon Linux 2의 기본 사용자입니다. 그렇다면 서버에 액세스하는 사람이 몇 명 있으면 어떨까요? 그들은 어떤 변경이든 할 수 있으며 우리는 누가 ec2-user라는 동일한 사용자 이름을 사용하는지 식별하기 어려울 것입니다. 따라서 이름에 따라 다른 사용자를 제공해야 합니다. 또한 ssh 키를 사용하여 EC2 인스턴스에 연결하고 sudo로 전환할 때 암호가 필요 없이 서버에서 모든 액세스 수준을 갖는 sysadmin이라고 가정하기 때문에 sudoer로 작동하도록 해야 할 수도 있습니다.
- name: create user
user:
name: nurulramadhona
shell: /bin/bash
- name: copy pubkey
authorized_key:
user: nurulramadhona
state: present
key: "{{ lookup('file', '/home/nurulramadhona/.ssh/id_rsa.pub') }}"
- name: set user as sudoers
lineinfile:
path: /etc/sudoers.d/90-cloud-init-users
line: 'nurulramadhona ALL=(ALL) NOPASSWD:ALL'
insertafter: EOF
4. 시간대 설정
(지역으로 변경해주세요)
- name: set timezone
community.general.timezone:
name: Asia/Jakarta
5. 호스트 이름 설정
(여기서는 localdomain에 대해서만 호스트 이름을 설정하는 데 사용합니다. 이미 가지고 있고 사용하려는 경우 공개 도메인으로 변경할 수 있습니다.)
- name: preserve hostname
lineinfile:
path: /etc/cloud/cloud.cfg
line: 'preserve_hostname: true'
insertafter: EOF
- name: set hostname
command: hostnamectl set-hostname {{ hostname }}.localdomain
- name: replace localhost entry
lineinfile:
path: /etc/hosts
regexp: '^127\.0\.0\.1'
line: '127.0.0.1 {{ hostname }}.localdomain {{ hostname }} localhost4 localhost4.localdomain4'
owner: root
group: root
mode: "0644"
마지막으로 모든 작업이 준비되었을 때입니다. 인벤토리에 다음을 추가해야 합니다.
new:
hosts:
108.136.225.50:
vars:
hostname: amazonlinux2
이제 플레이북을 실행해 봅시다!
$ ansible-playbook -i host.yml al2.yml -u ec2-user
PLAY [al2] **************************************************************************************************************************************************************
TASK [update] ***********************************************************************************************************************************************************
changed: [108.136.225.50]
TASK [install web server] ***********************************************************************************************************************************************
changed: [108.136.225.50]
TASK [install web server] ***********************************************************************************************************************************************
changed: [108.136.225.50]
TASK [modify home page] *************************************************************************************************************************************************
changed: [108.136.225.50]
TASK [create user] ******************************************************************************************************************************************************
changed: [108.136.225.50]
TASK [copy pubkey] ******************************************************************************************************************************************************
changed: [108.136.225.50]
TASK [set user as sudoers] **********************************************************************************************************************************************
changed: [108.136.225.50]
TASK [set timezone] *****************************************************************************************************************************************************
changed: [108.136.225.50]
TASK [preserve hostname] ************************************************************************************************************************************************
changed: [108.136.225.50]
TASK [set hostname] *****************************************************************************************************************************************************
changed: [108.136.225.50]
TASK [replace localhost entry] ******************************************************************************************************************************************
changed: [108.136.225.50]
PLAY RECAP **************************************************************************************************************************************************************
108.136.225.50 : ok=11 changed=11 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
기본 사용자를 지정하지 않고 서버를 원격으로 다시 확인하십시오. 이미 호스트 이름을 변경했으므로 재부팅도 수행합니다.
$ ssh 108.136.225.50
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
[nurulramadhona@amazonlinux2 ~]$ sudo reboot
Connection to 108.136.225.50 closed by remote host.
Connection to 108.136.225.50 closed.
ansible ad-hoc을 사용하여 호스트 이름과 시간대를 확인하여 설정을 확인하자!
$ ansible -i host.yml new -m shell -a "hostname && date"
108.136.225.50 | CHANGED | rc=0 >>
amazonlinux2.localdomain
Sun Apr 24 15:35:24 WIB 2022
이것이 Amazon Linux 2의 전부입니다! 다음 부분에서는 여기까지의 모든 게시물을 이미 팔로우한 경우 만든 게시물을 삭제하겠습니다. 다음 포스트로 넘어가자!
참조:
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Instances.html
Reference
이 문제에 관하여(Ansible을 사용하여 수행할 수 있는 Amazon Linux 2의 중요 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/ansible-for-amazon-linux-2-2icf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)