0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ansibleでいろいろセットアップ

Last updated at Posted at 2024-08-12

公開鍵配置とパスワード不要sudo

ログインパスワードは知っていて、Ansibleで操作するにはちょっとめんどくさいときに初期セットアップ的に行うやつ。公開鍵を配置し、sudo時にパスワード不要に設定する。
※完全にメモなのはごめんなさい。

事前作業

公開鍵を作成しておく。

# ssh-keygen

ansible本体と追加のパッケージをインストールする。

# dnf -y install ansible-core
# ansible --version
# ansible-galaxy collection install ansible.posix
# dnf install pip -y
# pip install passlib

インベントリファイルも作成しておく。

inventory.ini
[server]
192.168.13.113

実行コマンド

必要に応じて--checkは外す。

# ansible-playbook -i inventory.ini set-pubkey.yml --ask-pass --ask-become-pass --check 

Playbook

set-pubkey.yml
---
- name: Deploy SSH public key
  hosts: all
  remote_user: sysadmin
  become: yes

  tasks:
    - name: Ensure .ssh directory exists
      file:
        path: "/home/sysadmin/.ssh"
        state: directory
        mode: '0700'
        owner: sysadmin
        group: sysadmin

    - name: Add SSH public key
      ansible.posix.authorized_key:
        user: sysadmin
        state: present
        key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"

    - name: Allow passwordless sudo for sysadmin
      lineinfile:
        path: /etc/sudoers
        state: present
        regexp: '^sysadmin'
        line: 'sysadmin ALL=(ALL) NOPASSWD: ALL'
        validate: 'visudo -cf %s'

いろいろセットアップする。

実行コマンド

必要に応じて--checkは外す。

# ansible-playbook -i inventory.ini os-conf.yml --check

Playbook

os-conf.yml
---
- name: Configure system users, NTP, and install httpd, NetData
  hosts: all
  become: yes
  tasks:
    - name: Create user stadmin
      user:
        name: stadmin
        groups: wheel
        password: "{{ 'admin' | password_hash('sha512') }}"

    - name: Create user stuser
      user:
        name: stuser
        password: "{{ 'user' | password_hash('sha512') }}"

    - name: Install chrony package
      yum:
        name: chrony
        state: present

    - name: Configure chrony to use ntp.nict.jp
      lineinfile:
        path: /etc/chrony.conf
        regexp: '^pool'
        line: 'pool ntp.nict.jp iburst'
      notify: Restart chronyd

    - name: Ensure chronyd is started and enabled
      systemd:
        name: chronyd
        state: started
        enabled: yes

    - name: Install httpd
      package:
        name: httpd
        state: present

    - name: Ensure httpd is started and enabled
      systemd:
        name: httpd
        state: started
        enabled: yes

    - name: Open firewall for httpd
      firewalld:
        service: http
        permanent: yes
        state: enabled
      notify: Reload firewall

    - name: Install epel-release
      package:
        name: epel-release
        state: present

    - name: Install NetData
      package:
        name: netdata
        state: present

    - name: Ensure NetData is started and enabled
      systemd:
        name: netdata
        state: started
        enabled: yes

    - name: Open firewall for NetData
      firewalld:
        port: 19999/tcp
        permanent: yes
        state: enabled
      notify: Reload firewall

    - name: Get host IP address
      set_fact:
        host_ip: "{{ ansible_default_ipv4.address }}"

    - name: Setup the netdata.conf
      lineinfile:
        path: /etc/netdata/netdata.conf
        regexp: '^    bind to ='
        line: "    bind to = {{ host_ip }}"
      notify: Restart NetData

  handlers:
    - name: Restart chronyd
      systemd:
        name: chronyd
        state: restarted

    - name: Reload firewall
      command: firewall-cmd --reload

    - name: Restart NetData
      systemd:
        name: netdata
        state: restarted

Ansibleを使わない場合の手順

ユーザー作成・グループ追加

# useradd stadmin
# passwd stadmin
# usermod -aG wheel stadmin
# useradd stuser
# passwd stuser

NTP設定

/etc/chrony.confのpool行(3行目)を変更する。

/etc/chrony.conf
- pool 2.centos.pool.ntp.org iburst
+ pool ntp.nict.jp iburst

chronydの再起動

#  systemctl restart chronyd.service

ApacheのインストールとFW許可

インストール

# dnf install httpd -y

Firewall許可

サービスでもポートでもどちらでも良い。

サービスで許可の場合
# firewall-cmd --add-service=http
# firewall-cmd --runtime-to-permanent
ポート指定で許可の場合
# firewall-cmd --add-port=80/tcp
# firewall-cmd --runtime-to-permanent

サービス起動・自動起動設定

# systemctl start httpd
# systemctl enable httpd

Basic認証を実装

設定ファイル

/etc/httpd/conf.d/auth_basic.confに下記の通り設定を記載する。(新規作成)

/etc/httpd/conf.d/auth_basic.conf
<Directory /var/www/html/auth-basic>
    AuthType Basic
    AuthName "Basic Authentication"
    AuthUserFile /etc/httpd/conf/.htpasswd
    require valid-user
</Directory> 

ユーザー登録

userというユーザーを作成し、パスワードの設定を行う。

# htpasswd -c /etc/httpd/conf/.htpasswd user
New password:     # パスワード設定
Re-type new password:
Adding password for user user

ディレクトリ作成とApache再起動

テストページ用ディレクトリ(フォルダ)を作成し、Apacheを再起動する。(設定再読み込み)

# mkdir /var/www/html/auth-basic
# systemctl reload httpd

テスページ作成

/var/www/html/auth-basic/index.htmlに下記を記載する。(新規作成)

<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
Test Page for Basic Authentication
</div>
</body>
</html>

実装確認

http://(IPアドレス)/auth-basic/にブラウザでアクセスし、下記のようなダイアログが出て来たらユーザーパスワードを入力してページを表示させる。
注意したいのが、一度ブラウザで正しいユーザー/パスワードを入力すると、ブラウザを閉じるまでパスワードレスでページが表示できてしまう。
image.png

NetDataインストール

リソースモニタリングツールであるNetDataをインストールする。

epel-releaseインストール

epel-releaseは、追加のパッケージをインストールするときに使うやつ。
NetDataを入れるには必要。

# dnf install epel-release -y

NetDataインストール

# dnf install netdata -y

設定ファイル編集

アクセスを受け付けられるよう、自分のIPアドレスを設定する。

/etc/netdata/netdata.conf
bind to = 192.168.17.118

再起動とFW穴あけ

# systemctl enable --now netdata
# firewall-cmd --add-port=19999/tcp
# firewall-cmd --runtime-to-permanent

動作確認

http://(IPアドレス):19999/にブラウザでアクセスすると、下記のような画面が表示される。
image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?