cloud-init

cloud-init은 다양한 리눅스를 vm에 설치시 vm이 처음 로딩된후 실행되는 것 같다.

SSH 액세스 키, 유저 생성, 특별한 패키지 설치 등등 할수잇는일이 아주 많습니다.

왜 필요하냐면 기존에는 vm만들고 올라오면 console로 ip설정하고 ip로 접근해서 이런저런것을 해서 서버로 준비후 서비스에 넣게 되는데 auto provision을 사용하게 되면 vm이 생성과 동시에 ip받고 자체적으로 다 설정하고 재부팅하고 나면 서비스에 바로 적용됩니다. 결론은 vm초기 설치시부터 서비스 적용까지 사람의 손을 안타려고 만든거같습니다.

거의 모든 리눅스가 cloud init을 지원합니다.

아마존 / ms / 구글 클라우드회사도 모두 지원합니다.

cloud-init은 보통 boot 시점에 발생하며, 5 가지의 단계를 거칩니다.

단계

총 5단계가 있습니다.

  • Generator
  • Local
  • Network
  • Config
  • Final

maas 에서 사용하기

deploy하기전에 다음 화면에 내용을 넣어두면 설치시 실행을 해줍니다.

#cloud-config
users:
  - default
  - name: YourUserName
    sudo: ALL=(ALL) NOPASSWD:ALL
    shell: /bin/bash
    groups: sudo
    lock-passwd: false
    passwd: hashed_your_password
timezone: America/Los_Angeles
packages:
  - htop
  - tree
  - net-tools
  - zsh
package_update: true
package_upgrade: true
manage_etc_hosts: false
runcmd:
  - su ubuntu -c 'sh -c "$(curl -fsSL https://raw.githubusercontent.com/coreycole/oh-my-zsh/master/tools/install.sh)"'
  - chsh -s $(which zsh) ubuntu
  - sed -i "s/  git/  git\n  kubectl\n  kube-ps1\n  zsh-syntax-highlighting\n  zsh-autosuggestions/g" /home/ubuntu/.zshrc
  - echo "alias watch='watch ' " >> /home/ubuntu/.zshrc
  - echo "NEWLINE=\$'\\\\n'" >> /home/ubuntu/.zshrc
  - echo "export PROMPT='[\$FG[154]%T%{\$reset_color%}][%{\$fg[cyan]%}%m %{\$reset_color%}%~] \$(git_prompt_info)\${NEWLINE}# '" >> /home/ubuntu/.zshrc
  - echo "bindkey -v" >> /home/ubuntu/.zshrc
  - cd /home/ubuntu/.oh-my-zsh/custom/plugins/
  - git clone https://github.com/zsh-users/zsh-autosuggestions
  - git clone https://github.com/zsh-users/zsh-syntax-highlighting
  - sudo chmod 755 -R .
power_state:
  delay: '2'
  mode: reboot
  message: Bye Bye
  timeout: 5
  condition: True

#cloud-config 이건 꼭 써주셔야 합니다.

위에서 한일

  • 가끔 vm에 문제가 잇을때 콘솔로 접속해야하는데 그 때 사용할 유저를 하나 만들고
  • timezone설정
  • 추가 packages 설치
  • apt update 실행
  • apt upgrade 실행
  • 재부팅시마다 hosts 파일이 초기화 되는데 이걸 하지 /etc/hosts를 cloud-init이 관리하지 않겟다고 설정
  • oh-my-zsh을 설치하고 관련 내용을 설정 프롬프트도 설정
  • 모두 완료되고 나면 서버를 reboot한다. poweroff로도 할수 있다.

이제 vm이 올라오면서 이작업을 다 해주니 몇대를 올리더라도 부담이 없다.

추가

추가 필요한 내용은 다음에서 확인해보기 바란다.

https://cloudinit.readthedocs.io/en/latest/topics/examples.html

teamsmiley's profile image

teamsmiley

2021-02-08 00:00

Read more posts by this author