Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

of

Linux9 ansible Slide 1 Linux9 ansible Slide 2 Linux9 ansible Slide 3 Linux9 ansible Slide 4 Linux9 ansible Slide 5 Linux9 ansible Slide 6 Linux9 ansible Slide 7 Linux9 ansible Slide 8 Linux9 ansible Slide 9 Linux9 ansible Slide 10 Linux9 ansible Slide 11 Linux9 ansible Slide 12 Linux9 ansible Slide 13 Linux9 ansible Slide 14 Linux9 ansible Slide 15 Linux9 ansible Slide 16 Linux9 ansible Slide 17 Linux9 ansible Slide 18 Linux9 ansible Slide 19 Linux9 ansible Slide 20 Linux9 ansible Slide 21 Linux9 ansible Slide 22 Linux9 ansible Slide 23 Linux9 ansible Slide 24 Linux9 ansible Slide 25 Linux9 ansible Slide 26 Linux9 ansible Slide 27 Linux9 ansible Slide 28 Linux9 ansible Slide 29 Linux9 ansible Slide 30 Linux9 ansible Slide 31 Linux9 ansible Slide 32 Linux9 ansible Slide 33 Linux9 ansible Slide 34 Linux9 ansible Slide 35 Linux9 ansible Slide 36 Linux9 ansible Slide 37 Linux9 ansible Slide 38 Linux9 ansible Slide 39 Linux9 ansible Slide 40
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

Download to read offline

Linux9 ansible

Download to read offline

Linux Ansible

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

Linux9 ansible

  1. 1.  アジェンダ 0900-0910 今日できるようになる事、自己紹介 環境構築 0910-0915 Ansibleとは 0915-0925 Ansibleのインストール 0925-0950 Playbook、インベントリ 0950-1000 新規サーバーの環境構築 1000-1020 公開鍵認証 1020-1030 チェックと実行  シナリオ 新しいラボができた。 そこで新しいサーバーを使ってラボのテストを行うことにしたのだ が、そのラボでは他のラボでインストールしたモジュールなどを利用 しているので、まっさらなサーバーではテストができない。 すべてのサーバーで一つ一つコマンドを打ってインストールするの は面倒なので、Ansibleを使って自動化することにした。  メモ 持ち物:PC×人数分、LAN線×人数分、新規サーバー×人数分 サーバー×人数分 【Linux】#9 Ansible 1
  2. 2. 2 1 2 3 4 PC 192.168.210.11 192.168.210.12 192.168.210.13 192.168.210.14 【コントロールノード】 CentOS 8 192.168.210.111 192.168.210.112 192.168.210.113 192.168.210.114 【ターゲットノード】 CentOS 8 192.168.210.121 192.168.210.122 192.168.210.123 192.168.210.124 構成図 Server1 192.168.210.111 Server2 192.168.210.112 Server3 192.168.210.113 Server4 192.168.210.114 New Server3 192.168.210.123 New Server1 192.168.210.121 New Server4 192.168.210.124 New Server2 192.168.210.122 PC1 192.168.210.11 PC2 192.168.210.12 PC3 192.168.210.13 PC4 192.168.210.14 #1 コントロールノード ターゲットノード
  3. 3. 3 1 2 3 4 PC 192.168.210.11 192.168.210.12 192.168.210.13 192.168.210.14 【コントロールノード】 CentOS 8 192.168.210.111 192.168.210.112 192.168.210.113 192.168.210.114 【ターゲットノード】 CentOS 8 192.168.210.121 192.168.210.122 192.168.210.123 192.168.210.124 構成図 Ansible Ansible管理ホスト (コントロールノード) 192.168.210.111 Playbook インベン トリ 被管理ホスト (ターゲットノード) 192.168.210.121 192.168.210.131 192.168.210.141 Ansible Ansible管理ホスト (コントロールノード) 192.168.210.112 Playbook インベン トリ 被管理ホスト (ターゲットノード) 192.168.210.122 192.168.210.132 192.168.210.142
  4. 4. ファイル関連図 4 $ vi␣/etc/ansible/ansible.cfg [defaults] inventory = /etc/ansible/hosts remote_port = 54321 $ vi␣/etc/ansible/hosts [newServer] 192.168.210.121 ansible_user=root 192.168.210.131 ansible_user=root 192.168.210.141 ansible_user=root メイン設定ファイル インベントリ paybook(YAML形式) LAMP_Create.yml or NewServer.yml の名前設計が良い --- - name: install something hosts: newServer vars: ansible_become: yes ansible_become_method: sudo tasks: - name: Install Vsftpd yum: name: vsftpd state: latest - name: Install Ftp yum: name: ftp state: latest - name: Install Chrony yum: name: chrony state: latest - name: Install Httpd yum: name: httpd state: latest - name: Install Php yum: name: php state: latest - name: Install Mariadb-server yum: name: mariadb-server state: latest - name: Install Php-mysqlnd yum: name: php-mysqlnd state: latest
  5. 5.  手順1 パソコンのIPアドレスを変更する >「Windowsキー+r」 >「ncpa.cpl」 IPアドレス:192.168.210.xx サブネット:255.255.255.0 デフォゲ:なし  手順2 VMwareにログインする >ブラウザを開き、「192.168.210.100」 ユーザ名:root パスワード:P@ssw0rd  手順3 仮想マシンの名前を変更する >自分の仮想マシンを選択 >アクション→名前の変更 >仮想マシン名に「9」を追記 >自分の仮想マシンを起動する 環境設定 5
  6. 6.  手順4 nmtuiを起動する Linuxで以下のコマンドを打ち、NetworkManagerを起動 ※矢印キーでカーソル移動 ※Enterで決定  手順5 IPアドレス、デフォゲ、DNSを設定 >「Edit a Connection」を選択してEnter >「ensxx」を選択してEnter それぞれ、以下のように設定 Address:192.168.210.xx Gateway:192.168.210.254 DNS:8.8.8.8 >下までいき「OK」を押し、設定を終える  手順6 接続を有効化する >「Activate a connection」を選択 >「*ensxx」となっていることを確認、なっていなければ<Activate>でEnter ><Back>でEnter、下までいき「OK」でEnter、nmtuiを終了 >TeraTermで接続する(ユーザ名:root パスワード:P@ssw0rd) 環境設定 6 $nmtui
  7. 7. インターネット未接続環境でのdnf  ソフトウェアのインストールにはCentOS8のパッケージ管理ソフトウェアである「dnf」を使用していきますが、 デフォルトではインターネットからソフトウェアを取得することになります。  ここではインストールメディアからソフトウェアを取得する設定を行います。  インストールメディアのISOイメージをCDROMドライブにセットしてあります。 7 $ mkdir /media/CentOS $ mount –o ro /dev/cdrom /media/CentOS/ $ alias dnf=‘dnf --disablerepo=¥* --enablerepo=c8-media-BaseOS,c8-media-AppStream’ $ df ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 devtmpfs 905304 0 905304 0% /dev tmpfs 934792 0 934792 0% /dev/shm tmpfs 934792 9832 924960 2% /run tmpfs 934792 0 934792 0% /sys/fs/cgroup /dev/mapper/cl-root 13420544 4243772 9176772 32% / /dev/sda2 999320 191708 738800 21% /boot /dev/sda1 613184 6908 606276 2% /boot/efi tmpfs 186956 1180 185776 1% /run/user/42 tmpfs 186956 4672 182284 3% /run/user/0 /dev/sr0 8037456 8037456 0 100% /media/CentOS $ alias alias cp='cp -i' alias dnf=‘dnf --disablerepo=¥* --enablerepo=c8-media-BaseOS,c8-media- AppStream’ ←確認 alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias␣dnf=‘dnf␣--disablerepo=¥*␣--enablerepo=media-baseos,media-appstream' 設定ファイルは cat␣/etc/yum.repos.d/CentOS-Stream-Media.repo
  8. 8. Ansibleとは  Ansibleとは 【説明】Ansibleはオープンソースの構成管理やOS、ソフトウェアなどの設定作業を自動化するツールです。 【特徴】どんな環境のターゲットノードに対して行っても全て同じ実行結果になるという特徴があります。 【用途】主にLinuxやWindowsの管理に使われており、手動で実行していたOSコマンドやソフトウェアのインストールを自動で行うこと。 【条件】コントロールノードにはAnsibleが導入されていること、ターゲットノードにはSSHの設定がされていることが必要です。 次のページからはホストにAnsibleのインストールをしていきます。 8 全部同じ実行結果 Play book SSH コントロールノード ターゲットノード inven tory
  9. 9. Ansibleのインストール  手順7 Python3のインストール AnsibleはPythonを使ったソフトウェアツールです。 pip3を使ってインストールします。 そのためにまずはPython3をインストールします  手順8 pip3を使ったAnsibleのインストール  手順9 確認  手順10 Ansible用のディレクトリを作成する Ansibleでは複数のファイルを作成し、扱うのでごちゃごちゃしない ようにAnsibleをダウンロードした際に自動的に作成されるディレク トリで作業を行います。  手順11 作成した鍵を配置するディレクトリを作成 今回のラボではSSHに公開鍵認証を使うので、その事前準備をしてい きます。 9 $ dnf install python3 $ sudo pip3 install ansible $ ansible --version ~~(省略)~~ [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)] $ cd /etc/ansible $pwd /etc/ansible $ python3 --version Python 3.6.8 $ mkdir ~/.ssh
  10. 10. Ansible Playbookとは  Playbookとは Playbookとは、ターゲットノードに対する設計書手順のことをいいます。 パッケージ管理やユーザー管理、ファイルやディレクトリ操作など、さまざまな設定を記述することができます。 Ansibleでは、このPlaybookをYAMLという書式で記述することになっていますが、このYAMLの書き方が少し特殊です。  YAMLとは YAMLはデータ定義のためのフォーマットです。 特徴的なのはインデントで、YAMLではインデントを使って階層を表すのですが、このインデントの記述にタブを使うことができません。 すべてスペース空白を用いてインデントを記述します。 1つのインデントにつき、スペース空白2個で表します。 つぎのページで実際に書いてみます。 10
  11. 11. Ansible Playbookを書いてみる  手順13 viを立ち上げる  手順14 Playbookを書く 各インデントにはタブキーなどを使わず、 スペース2個でインデントを表記すること に注意してください ※⾧いので2段組みにしてますが、 左に続いて右側も記述してください 11 $vi install.yml --- - name: install something hosts: newServer vars: ansible_become: yes ansible_become_method: sudo tasks: - name: Install Vsftpd yum: name: vsftpd state: latest - name: Install Ftp yum: name: ftp state: latest - name: Install Chrony yum: name: chrony state: latest - name: Install Httpd yum: name: httpd state: latest - name: Install Php yum: name: php state: latest - name: Install Mariadb-server yum: name: mariadb-server state: latest - name: Install Php-mysqlnd yum: name: php-mysqlnd state: latest install.yml
  12. 12. Ansible インベントリを書いてみる  インベントリとは インベントリはPlaybookをどのホストノードに対して実行するのかを記述したファイルです。 IPアドレスやユーザネーム、パスワードなどを記述します。  手順15 viを立ち上げる  手順16 インベントリを書いてみる hostsに以下の2行を記述してください インベントリでは、[]でグループを作成し、その後IPアドレスなどを記述します。 Playbookにはhostsにここで設定したグループ名を記述しています。 12 [newServer] 192.168.210.xx ansible_user=root $vi hosts
  13. 13. Ansible 公開鍵認証とは  公開鍵認証とは AnsibleではSSHにパスワード認証を使うこともできますが、今回は公開鍵認証を使います。 公開鍵認証とは、サーバーに置かれた公開鍵と、対になる秘密鍵を持ったユーザーのみがSSHでアクセスできるようになる方式です。 パスワードさえ知っていればアクセスできてしまうパスワード認証と比較するとセキュリティが高い方式だといえます。 13 公開鍵 秘密鍵 鍵なし
  14. 14. Ansible 新規サーバーの環境設定  手順17 Chromeでvmwareを開き、ターゲットノードを起動する >サーバーの名前が Linux9-1【ansible】 となっているものを選んでください。(9-xは座席番号です。)  手順18 コントロールノードとターゲットノードで疎通できることを確認 座席番号1の方→192.168.210.111 2の方→192.168.210.112 3の方→192.168.210.111 4の方→192.168.210.114  手順19 鍵を受け取るファイルを作成する  手順20 中身に何も入っていないことを確認  手順21 TeraTerm(コントロールノード)に戻ります。 14 $ping 192.168.210.11x $ mkdir ~/.ssh $ touch ~/.ssh/authorized_keys $ cat ~/.ssh/authorized_keys
  15. 15. Ansible 新規サーバーの環境設定  手順22 鍵をつくる 以下のコマンドで公開鍵と秘密鍵を作成します。  手順23 鍵が作られたことを確認します。 id_rsa(秘密鍵)id_rsa.pub(公開鍵)が作られていることを確認します。  手順24 公開鍵の送信 以下のコマンドで公開鍵をターゲットノードに送ります 15 $ssh-keygen Enter file in which to save the key (/root/.ssh/id_rsa):(Enter) Enter passphrase (empty for no passphrase):(Enter) Enter same passphrase again:(Enter) Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:JivX/abNy6mwNIAHHlISvkMFALQmP6NcU2pYoSJKxJw root@forse The key's randomart image is: +----[RSA 3072]----+ |B+=+o | |.Eo+. | |+=+.o. | |Boo+o+ | |..*=o + S | |..o+.. * . | |.. . o = . | | o . + =.. | | . o+B. | +-----[SHA256]-----+ $ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.210.12x /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ...(省略)... Are you sure you want to continue connecting (yes/no/[fingerprint])? yes ...(省略)... root@192.168.210.xx's password:(P@ssw0rd を入力) Number of key(s) added: 1 Now try logging into the machine, with: "ssh '192.168.210.12x'" and check to make sure that only the key(s) you wanted were added. # ls ~/.ssh authorized_keys id_rsa id_rsa.pub known_hosts
  16. 16. Ansible 新規サーバーの環境設定  手順25 公開鍵認証を確認 通常SSHログインをする際にはパスワードが要求されますが 正しく公開鍵、秘密鍵が置かれていると要求なしでログイン することができます。  手順26 実際に公開鍵が置かれていることを確認する  手順27 確認したら、新規サーバーから抜けます 16 $ ssh root@192.168.210.12x Last login: Sun May 16 14:10:36 2021 from 192.168.210.2 $cat ~/.ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDJnd/FVsj0PTNL3C8q L0Hsm0T2nnXh/ZRoKgFue9a24tbjbEUZECEz4uw/TSCngxrYB mwTe/p7qJPYQuU/ (…省略…)=root@forse SSHコマンドを打ったユーザであることを確認 $exit logout Connection to 192.168.56.12x closed.
  17. 17. Ansible 文法チェック  Ansibleを使用するためのセットアップが終了しました。いよいよ実行…といきたいところですが、サーバーの変更は サービスに大きな影響を与えることがありますので、実行前に確認チェックを行いましょう。  Ansibleにはそのための文法チェック機能がついていますので、実際に使ってみます。  手順28 文法チェック Ansibleサーバーで以下のコマンドを実行してみましょう 以下のように何も出なければ問題ないです。 ※このとき、WARNINGかERRORが出るときがあります。それぞれ、次のような意味を持ちます。 WARNING → 推奨されていない書き方 ERROR → 書き方が間違っている これらが出た場合はYAMLの書き方が間違っていないかを確認してみましょう。 17 $ ansible-playbook -i hosts install.yml --syntax-check playbook: install.yml
  18. 18. Ansible テスト実行  Ansibleには文法チェックの他に、テスト実行のオプション、checkが用意されています。  checkでは、実際にどういった挙動が起きるのかを確認することができます。  ここでは実際の実行結果が出力されますが、ターゲットノードには反映されていないので注意です。  手順29 テスト実行 PLAY RECAPを見て、全てokになっていることを確認 18 $ansible-playbook -i hosts install.yml --private-key="~/.ssh/id_rsa" --check PLAY [install something] ******************************************************* TASK [Gathering Facts] ********************************************************* ok: [192.168.210.12x] (中略) PLAY RECAP ********************************************************************* 192.168.210.12x : ok=8 changed=7 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
  19. 19. Ansible 本番  ここまでクリアしていれば、あとは実行するだけです。  手順30 本番実行 PLAY RECAPを見て、全てokになっていることを確認  手順31 確認 新規サーバーで正しく各種コンフィグがインストール、アップデートできているかを確認しましょう。 今回インストールしたもの:(1)vsdtpd (2)ftp (3)httpd (4)php (5)mariadb-server (6)php-mysqlnd (7)chrony 確認するためのコマンド→ など 19 $ansible-playbook -i hosts install.yml --private-key="~/.ssh/id_rsa" PLAY [install something] ******************************************************* TASK [Gathering Facts] ********************************************************* (中略) PLAY RECAP ********************************************************************* 192.168.210.12x : ok=8 changed=7 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 $rpm -qa | grep httpd
  20. 20. 時間が余ったら  パッケージのアンインストール方法を試してみる パッケージのアンインストールはplaybookの「state」を「absent」に変更するだけです。 実際にやってみましょう。 ここでは面倒なのでviの機能を使ってまとめて置換をします。  手順32 playbookを開く  手順33 置換をする 【解説】 0,$ → ファイルの先頭から末尾まで s/変換前/変換後/g → 変換のコマンド 20 $vi /etc/ansible/install.yml :0,$s/latest/absent/g
  21. 21. 時間が余ったら  手順34 Ansibleを実行する  手順35 アンインストールされていることを確認する >手順31と違うことを確認 ここまででおわりです、おつかれさまでした! 21 $ansible-playbook -i hosts install.yml --private-key="~/.ssh/id_rsa" $ ssh root@192.168.210.12x Last login: Sat May 29 12:30:22 2021 from 192.168.210.12x $ rpm -qa | grep http など $
  22. 22. 22
  23. 23. ブラウザからvmwareにアクセスします 23 手順6 「Windowsキー」+r → 「https://192.168.210.100」 手順7 詳細表示 → 192.168.210.100にアクセス ユーザ名: パスワード: →ログイン 手順8 仮想マシンの作成/登録 ※画面が遷移しない場合、F5キーで更新
  24. 24. 24 仮想マシンを作成します 手順9 作成タイプの選択 新規仮想マシンの作成(デフォルト) → 次へ 手順10 名前とゲストOSの選択 名前: connpassIDの先頭4文字+【study】+linux1 互換性:ESXi仮想マシン(デフォルト) ゲストOSファミリ:Linux ゲストOSのバージョン:CentOS 8(64ビット) →次へ 手順11 ストレージの選択 datastore1 →次へ
  25. 25. 25 仮想マシンを作成します(その2) 手順12 設定のカスタマイズ CPU:「1」→「4」 ハードディスク:「シック」→「シン」 CDドライブ1: 「ホストデバイス」→「データストアISO ファイル」 データストアブラウザ 「SSD_03」→「.ios」→「Cent8- 2004」 設定の確認 「完了」 画面下部の「最近のタスク」で完了を確認
  26. 26. 26 仮想マシンに電源を入れます 手順13 左ペインのナビゲータから「仮想マシン」 →作成した仮想マシンを選択 →「パワーオン」 →画面下部のディスプレイを部分をク リック
  27. 27. インストールメディアを挿入 し、仮想マシンを起動すると 次の画面が表示されます。 「Install CentOS Linux 8」を 選択し、Enterキーを押してく ださい。 27
  28. 28. 最初に言語を選択します。 日本語を選択し、「続行(C)」 を押してください。 ここに入力して検索します →「ja」と入力 28
  29. 29. インストール概要画面でイン ストールの基本的な設定を行 います。 仮想マシンの設定で右側が見 切れていますが気にしないで ください。 まずは「!」アイコンが付いた 項目を設定します。 「インストール先」の項目を クリックしてください。 29
  30. 30. インストール先のディスクを 指定します。 ここではディスクをディレク トリごとに分割したりできま すが、今回はディスク全体を Linux全体の領域として使用す ることとします。 何も変更せずに「完了(D)」を 押してください。 30
  31. 31. この状態で「!」アイコンの項 目がなくなったためインス トールを開始できますが、追 加の設定として以下の設定を 行っていきます。 ・時刻と日付 ・ソフトウェアの選択 ・ネットワーク設定 まずは「時刻と日付(T)」をク リックしてください。 31
  32. 32. アジア/東京を選択するため、 地図から東京近辺をクリック して、地域・都市がアジア/東 京となったことを確認し、 「完了(D)」を押してください。 NTPを使用して時刻を正確に することもできますが今回は 省略します。 インストールの概要画面に 戻ったら「ソフトウェアの選 択(S)」をクリックしてくださ い。 32
  33. 33. ソフトウェアの選択では、 Linuxをどのような構成でイン ストールするかを選択します。 今回はインストール時は最小 限としてインストールし、イ ンストール後に使用するソフ トウェアを追加していくよう にします。 「最小限のインストール」を 選択し、「完了(D)」を押して ください。 インストールの概要画面に 戻ったら「ネットワークとホ スト名」をクリックしてくだ さい。 33
  34. 34. ネットワークとホスト名では 仮想マシンに割り当てるホス ト名、IPアドレスを設定しま す。 ホスト名を変更後、「適用 (A)」を押してください。 次にネットワークの「オフ」 を「オン」にし、「設定(C)」 を押してください。 ホスト名:connpassアカウン トの頭4文字 34
  35. 35. 編集画面が開かれたら、 「IPv4設定」タブをクリック してください。 デフォルトでは自動(DHCP)の 設定となっていますが、今回 は静的アドレスを割り当てま す。 メソッドを「手動」に変更し、 「追加(A)」を押してください。 その後、アドレスを以下の通 り設定してください。 アドレス 192.168.210.xxx ネットマスク 24 ゲートウェイ 192.168.210.1 DNSサーバー 192.168.210.1 設定完了したら「保存(S)」を 押してください。 35
  36. 36. ネットワークとホスト名の画 面は「完了」を押してインス トール概要の画面に戻ります。 インストール設定はこれで完 了です。 「インストールの開始」を押 してください。 2分45秒程度で完了します。 36
  37. 37. インストールが開始されます。 インストール中にrootパス ワードの設定と一般ユーザー の作成を行います。 「rootパスワード(R)」を押し てください。 37
  38. 38. rootパスワードを設定し、 「完了(D)」を押してください。 脆弱なパスワードを設定した 場合は「完了(D)」を2回押す 必要があります。 インストール中画面に戻った ら「ユーザーの作成(U)」を押 してください。 38
  39. 39. root以外に通常使用するユー ザーを作成します。 各項目を設定し、「完了(D)」 を押してください。 ここでは「このユーザーを管 理者にする」はオンに設定し ます。 39
  40. 40. 「完了しました!」と表示さ れればインストール完了です。 インストールメディアを取り 出し、「再起動」を押してく ださい。 40

Linux Ansible

Views

Total views

56

On Slideshare

0

From embeds

0

Number of embeds

0

Actions

Downloads

5

Shares

0

Comments

0

Likes

0

×