一念発起してVPSを借りたのですが、サーバの初期設定の操作で色々詰まってサーバ削除・新規作成を繰り返していたので、手順を残すこともできるAnsibleを使い始めました。
RedHatが提供している、サーバの設定自動構成ツール。
クライアントからサーバへSSHで接続してリモートでコマンドを実行できます。
$ brew install ansible
playbookと呼ばれる、実行したいスクリプトをyamlで記述します。
以下がplaybookの設定例です。
hostsファイルで設定したallというグループに属するサーバにアクセスします。
サーバ作成直後でroot以外のユーザがいない状況を想定しているのでrootでログインします。
- hosts: all
user: root
ubuntuはsudo権限を持ったグループ名がsudo
- name : add user
user:
name: "{{ user_name }}"
state: present
password: "{{ password }}"
groups: sudo
パーミッションは700ではなく0700
- name: mkdir .ssh
file:
path: "~{{ user_name }}/.ssh"
state: directory
owner: "{{ user_name }}"
group: "{{ user_name }}"
mode: 0700
パーミッションは600ではなく0600
- name: private key for slave server
copy:
dest: "~{{ user_name }}/.ssh/authorized_keys"
content: "{{ lookup('file', '~/.ssh/public_openSSH') }}"
mode: 0600
owner: "{{ user_name }}"
group: "{{ user_name }}"
- name: "待受ポートを {{ sshd_port }} に変更"
lineinfile:
dest: /etc/ssh/sshd_config
regexp: "^Port"
insertafter: "^#Port"
line: "Port {{ sshd_port }}"
- name: Allow new incoming SYN packets.
iptables:
chain: INPUT
protocol: tcp
destination_port: "{{ sshd_port }}"
ctstate: NEW
syn: match
jump: ACCEPT
comment: Accept new SSH connections.
- name: パスワード認証の無効化
lineinfile:
dest: /etc/ssh/sshd_config
regexp: "^PasswordAuthentication"
insertafter: "^#PasswordAuthentication"
line: "PasswordAuthentication no"
これ以降は作成した一般ユーザでスクリプトを実行した方がよいのでユーザ切り替えのためにログアウト。
- name: logout
meta: reset_connection
server_setup.ymlというplaybookを、hostsというファイルで設定したサーバに対して実行します。公開鍵認証をする場合はprivate-keyオプションでopenSSH形式の秘密鍵を指定します。
$ ansible-playbook server_setup.yml -i hosts --private-key ~/.ssh/private_openSSH.ppk
第1回 | VPSをAnsibleを使ってセットアップする |
第2回 | AnsibleでVPSをセットアップする【その2】 |
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント