Ansible Linux OS 설정 예제
Linux OS 설정 예제 자료임. 실제 사용하는 것 아님
클라우드를 이용하는 경우 cloud-init 에서 처리해야 하는 부분이 있고 Ansible 같은 설정관리 프로그램에서 처리할 수 있는 부분이 있음. 보안요구사항에 따라 설정이 보강되어야 함.
OS configuration
OS 설정은 ansible role을 통해서 관리를 하며 아래의 role을 이용함.
각 ansible role의 소스는 별도 관리
baseos.common
baseos.local_facts
baseos.users
baseos.osconfig
baseos.ldap_client
baseos.security
docker.install
$ cat base_os_config.yml
- name: apply common OS configuration to all nodes
hosts: localhost
roles:
- devops.baseos.common
- { role: devops.baseos.local_facts, when: local_facts == "yes", tags: 'local_facts' }
- { role: devops.baseos.users, tags: 'users' }
- { role: devops.baseos.osconfig, tags: 'osconfig' }
- { role: devops.baseos.ldap_client, tags: 'ldap_client' }
- { role: devops.baseos.security, tags: 'security' }
- { role: devops.docker.install, tags: 'docker.install' }
$ ansible-playbook -i inventory/localhost base_os_config.yml --sudo |
CentOS7에서 Ubuntu와 동일할 경우 "동일"이라고 표시
ansible implemention : ansible 에서 관리되는 항목에 포함이 되었을 경우 포함.
OS 설정 | Ubuntu 16.04 | CentOS7 | memo | cloud-init/ansible role |
---|---|---|---|---|
package install | python-minimal postfix | postfix | ansible 실행을 위해 Ubuntu에서 python-minimal 필요 postfix 서비스는 disable | cloud-init |
package update | apt-get -y update DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade | yum update -y |
| cloud-init |
sudoers | /etc/sudoers.d/10-example | 동일 | operation 계정만 NOPASSWD 옵션 이용함 | devops.baseos.users |
OS limit | /etc/security/limits.d/10-example.conf | /etc/security/limits.d/10-example.conf (동일) /etc/security/limits.d/20-nproc.conf 삭제 | increase nofile, nproc | devops.baseos.osconfig |
OS banner | /etc/motd delete /etc/update-motd.d/00-header delete /etc/legal | /etc/issue |
| devops.baseos.osconfig |
root password | update | 동일 |
| devops.baseos.users |
user 관리 | create these accounts: example security operation | 동일 | example 은 docker,systemd-journal 그룹에 추가로 속함. | devops.baseos.users |
root .bashrc | 다음 내용 추가 alias vi='vim' | 동일 |
| Ubuntu의 경우 vi와 vim이 동일한 프로그램임. 설정하지 않아도 되어서 뺄 예정임. |
sshd config | /etc/ssh/sshd_config | /etc/ssh/sshd_config /etc/cloud/cloud.cfg 설정 변경 | /etc/ssh/sshd_config 파일이 OS별로 다른 부분이 있음 CentOS에서는 "HostKey /etc/ssh/ssh_host_dsa_key" 비활성화를 하였음. | devops.baseos.osconfig |
sysctl | /etc/sysctl.d/60-example.conf | 동일 |
| devops.baseos.osconfig |
TMOUT 설정 | /etc/profile.d/example.sh | 동일 |
| devops.baseos.osconfig |
bash history | /etc/profile.d/command_save.sh /etc/rsyslog.d/60-example.conf /etc/logrotate.d/command_save | 동일 |
| devops.baseos.security |
security - 파일 permission | /etc/passwd /etc/shadow /etc/rsyslog.conf /etc/services /etc/crontab /etc/ldap/ldap.conf | 동일 |
| devops.baseos.security |
system timezone | Asia/Seoul | 동일 |
| devops.baseos.osconfig |
ntp 설정 | ntp 설치 /etc/ntp.conf enable ntp service | ntp 설치 /etc/ntp.conf enable ntpd service disable chronyd | centos: disable chronyd ubuntu: "enable mode 7" 옵션을 ntp.conf 에 추가 OS에 따라 서비스 이름이 다름 | devops.baseos.osconfig |
systemd - mount | /etc/systemd/system/example.mount | 동일 | 디스크 마운트하는 부분은 cloud-init에 있는 부분임. | cloud-init |
systemd - docker install | install docker-engine with package manager /etc/systemd/system/docker.service.d/override.conf install /usr/bin/docker-compose with binary | 동일 |
| devops.docker.install |
systemd - collectd | /etc/systemd/system/collectd.service /etc/systemd/system/log-forward.service /etc/systemd/system/telegraf.service | 동일 | metric 수집, 로그 전송용 | devops.docker.install |
security - /etc/passwd | 불필요한 계정 /etc/passwd 에서 주석 처리 | 동일 |
| cloud-init |
security - pwquality 설정 | libpwquality-tools , ibpam-pwquality 설치 /etc/security/pwquality.conf.d/10-example.conf | libpwquality 설치 /etc/security/pwquality.conf /etc/login.defs |
| devops.baseos.security |
security - 패키지 삭제 | rsh-server, postfix 삭제 lsof, chkrootkit, rkhunter 설치 auditd 설치 /etc/audit/audit.rules 설정 | rsh-server, postfix 삭제 lsof, net-tools, psmisc, rkhunter 설치 auditd 설치 /etc/audit/audit.rules 설정 | postfix는 cloud-init에서 서비스 disalbe을 함 | devops.baseos.security |
ldap config | ldap-auth-client nscd 설치 /etc/ldap/conf 설정 nscd 서비스 시작 | nss-pam-ldapd openldap 설치 /etc/nslcd.conf |
| devops.baseos.ldap_client |
selinux | - | 비활성화함. /etc/sysconfig/selinux /etc/selinux/config |
| devops.baseos.security |
fix cpu, and interface name | /usr/bin/fix_aws_grub.sh /etc/systemd/system/fix_aws_grub.service | tuned-adm profile latency-performance |
| devops.baseos.osconfig CentOS의 경우 cloud-init에서 적용을 함. |
logrotate for /example/logs/ | /etc/logrotate.d/example-logs | 동일 | devops.baseos.osconfig |
|