FILCO MINIRA-Rを一週間使った

親指シフトならぬ親指ファンクションキーボードです。

茶軸の実物を触って打ちごごちを気に入ってしまい、お取り寄せしました。キー配列が独特でいまはキー入力がたどたどしいですが、慣れると早く打てそうな可能性を感じます。一ヶ月後にどうなっているのやら楽しみです。

ansibleで構成管理 /etc/sysconfig/network-scripts/配下の設定ファイルを取得してみる

はじめに

Annsibleでターゲットサーバフォルダ配下のファイルをまとめて取得(fetch)したいときの方法です。findでファイルの一覧を取得してその結果をwith_itemsで読み込ませることで纏めてfetchできます。with_fileglobwith_filetreeで出来そうに思えたのですが、やってみるとできませんでした。調べるとどうやらcopyやtemplateモジュールでは使えるのですがfetchでは使えないみたいです。

play-book

以下は/etc/sysconfig/network-scripts/配下にあるファイルを纏めて取得するプレイブックのタスクです。

  tasks:
          - name: 現在時刻セット
            set_fact:
              datetime: "{{ lookup('pipe','date +%Y%m%d') }}"

          - name: ファイル一覧取得
            shell: find /etc/sysconfig/network-scripts/ -type f
            register: list

          - name: ファイル取得
            fetch:
                    src: "{{ item }}"
                    dest: /tmp/{{ datetime }}/
                    become: yes
            with_items:
                    "{{ list.stdout_lines }}"
                   

以上

ブルートフォース攻撃されたのでログイン履歴を確認するの巻 REDHAT8

ssh(ポート:22→22022に変更)を解放してたらバッドログイン(lastb)がこんなになりました。気を付けないと。。アクセス元IPをネットで調べるとブラック率100%でした。

ブルートフォース

ちなみにREDHATのログイン履歴は以下にのこります。

/var/log/wtmp (ログイン成功)
/var/log/btmp  (ログイン失敗)

viなどで直接みることはできないのでlast lastbコマンドで見ます。それよりも推測されやすいポート、パスワードログインは使用しないなどのセキュリティ対策はするべきでした。。

Ansibleでユーザパスワードの有効期限を設定(shellモジュール編)

目次

はじめに

ansibleからchageコマンドを打たせてユーザパスワードの有効期限を設定します。EPEL版のAnsibleが入った状態での説明になります。

プレイブック作成

作成例として「testuser」というユーザのパスワード有効期限を設定するプレイブックを作ります。「chage」を実行するためにはroot権限への昇格が必須なので「become:」入れときます。

#user_password_limit.yml
---
- hosts: all
  become: yes

  tasks:
    - name: パスワード有効期限90日
      shell: "chage -M 90  {{ username }}"

    - name: パスワード有効期限 結果表示
      shell: "chage -l {{ username }}"
      register: result
  
    - debug:
        msg: "{{ result }}"

プレイブック実行

例として自ホスト(localhost)向けにプレイブックを実行します。

$ ansible-playbook -i localhost, user_password_limit.yml -e username=testuser --ask-become-pass

実行後、/etc/shadowを見るか$ cat /etc/shadowchageコマンド$ chage -l testuserでパスワードの有効期限が変更されたことをチェックしておきます。

以上

Ansible インベントリファイルを指定せずに実行したい

はじめに

Ansibleを実行するとき、-iオプションでインベントリファイルを指定するような感じですが、ファイルがデフォルト(/etc/ansible/hosts)の場所にあれば指定しなくても実行できます*1。例えばansibleを動かすときの実行例でよくあるansible -i hosts all -m pingというものも、-i host無しで実行できます。またプレイブックも同様に実行できます。

変更前:ansible -i hosts all -m ping
変更後:ansible all -m ping

実行例

/etc/ansible/hostsにホストを追加したあとansible実行した結果例です。

vi /etc/ansible/hosts
↓
以下を追加
[linux]
192.168.0.1
#実行
$ ansible all -m ping
↓
192.168.0.1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}

以上

*1:インベントリファイルのデフォルトパスはansible.cfgで変更できます

Ansible インベントリファイルのデフォルト配置先を変更

ansibleのインベントリファイルはデフォルトだと「/etc/ansible/hosts」が読み込まれます。このデフォルト値を変更するには「ansible.cfg」*1を編集します。

$ vi ansible.cfg
例)
変更前:#inventory      = /etc/ansible/hosts
変更後:inventory      = /home/ansible/hosts.txt

*1:ansible.cfgは環境(設計)によって配置される場所がデフォルトの/etc/ansbile/ansible.cfgから変わっていることがあります。場所を確認したいときは、「$ ansible --version」とコマンド打つと、ansible.cfgのフルパスが表示されます

Ansible ansible.cfgのパスを確認したい

ansible実行するときに読み込まれる「ansible.cfg」の置き場所(パス)を確認するには以下コマンドを叩きます。

 $ansible --version
↓
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg ←ここをチェック
  configured module search path = ['/home/ansible/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.6.8 (default, Sep  9 2021, 07:49:02) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]

「ansible.cfg」はここに記載のあるとおり、次の順で見つかったものが読み込まれます。どれが読み込まれているのかを確認するときに使います。