01_Ansibleノート+実際の操作

理論

ここに画像の説明を挿入します

Ansible-自動化された操作とメンテナンス:

  1. Ansibleのコアミッションは何ですか?
    回答:運用と保守-構造全体の安定性を維持し、タイムリーな調査と調整などを行います。
  2. Ansibleのコアミッションは?
    バッチ展開サービスの解決、再起動、デバッグなど。

他の同様のansible製品(ansibleが現在最も人気があります)
– Puppet
– Saltstack

Puppet&saltstackの典型的なC / Sモードツール-サーバー側としていくつかのデバイスが必要です(制御-命令の送信)

  • 管理対象端末の数に関係なく、クライアントをインストールする必要があります
    –Pythonで開発されたAnsibleとSaltstack->従来のソースコードCC ++と比較

なぜansibleが最もホットなのですか?

  • 高い並行処理
  • 軽量で制御が簡単
  • クライアントは必要ありません
  • sshに基づく

Ansibleの最適化
実際 Ansibleの最適化-制御効率はAnsible自体を最適化するものではありません-Netcomとsshに基づくプロトコル

sshすべてのサーバーがデフォルトでオンになっています。
検証:パスワードパスワード検証
キー認証-キーペア-秘密キーと公開キー
-公開キー-ロック-公開キーはインターネット
経由で送信できます-秘密キー-キー-送信できません
必要がありますsshサービスを最適化する-キャンセルのプロンプトと接続の最大数と検証時間


軽量とは軽量
とは:コードの設計と使用
例:Apache-weight&Nginx-lightweight- code
-Nginxから多くのまれな機能を差し引いたもの-> Nginxは特定の環境向けです|業界開発-Eコマース
-Apahceのインストールと展開&control-Nginxが削減した多くのリソースを消費する


重要なコンポーネント:
-Ansible:コア-ユーザーリクエストの処理に使用
-在庫:在庫-ダウンストリーム機器のカウントと指定に使用されますか?-> IPアドレス/ネットワークセグメントとホスト名-
プレイブック:スクリプト-ダウンストリーム機器のバッチ処理タスクのシーケンスを指定するために使用されます
-モジュールとプラグイン:モジュールとプラグイン固有のアプリケーション。ダウンストリーム機器が特定の操作を実行するときに呼び出す必要があります。


Ansibleの重要なドキュメントと重要なコマンド
-ファイル:デフォルトの/ etc / ansible
-Inventoryの場合、inventory-ファイルを管理するホストファイルを制御できます
-パスを定義しますAnsibleは機能の一部を調整しますマニフェストファイルのパス、役割の調整- anisble.cfg構成構成-Roles
ディレクトリ-定義-Ansibleの複数のタスクのロール

重要なコマンド
– ansible-docコマンドは、「モジュール|プラグイン」固有の関数とパラメーター
を表示するために使用されます– ansible-単一の制御コマンドを実行するために使用されます– ansible-
playbook-プレイブックを実行するために使用されます
–ansible-galaxy-使用されますキャラクターを作成するには


プレイブックを使用して複数のLAMP環境をデプロイする

プレイブック-ロールはディレクトリを使用します:
ファイル:送信のためにリモートサーバーと構成ファイル
コピーモジュールに同期する必要があるソースファイルを保存します-ファイルディレクトリに.j2サフィックスを入れないでください
タスク:タスクセット-どのタスクを実行しますかダウンストリームデバイスは
テンプレートを実行する必要があります:テンプレートファイルを実行するために使用されます-一般的にいくつかのスクリプトを配置します-一般的な構成ファイルhttpd.conf-> httpd.conf.j2
テンプレート:テンプレートファイルを実行するために使用されます-一般的にいくつかのスクリプトを配置します-一般的な構成ファイルhttpd.conf ->httpd。conf.j2
送信用テンプレートモジュール-.j2サフィックス

コピーとテンプレート-ファイル転送用の2つのモジュール-
共通のコピー-主にファイルディレクトリ内のファイル用-
テンプレートディレクトリ用の.j2形式(.exe、.docなど)のテンプレート

練習

サーバー上のAnsibleを使用してClient1とClient2でLAMPを構築する

環境:サーバー:192.168.1.61
client01:192.168.1.63
client02:192.168.1.64

1.時間とタイムゾーンを同期します

[root@192 ~]# ntpdate ntp1.aliyun.com
[root@192 ~]# cp -a /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

2.epelソースを追加してansibleをインストールします

[root@192 ~]# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@192 ~]# yum -y install ansible

3.パスワードなしのログインを構成します

   46  ssh-keygen 
   47  ssh-copy-id 192.168.1.63
   48  ssh-copy-id 192.168.1.64

4.構成チェックリストテストansible

[root@192 ansible]# pwd
/etc/ansible
[root@192 ansible]# tail -3 hosts 
[web]
192.168.1.63
192.168.1.64
[root@192 ansible]# ansible web -m ping 
192.168.1.64 | SUCCESS => {
    
    
    "ansible_facts": {
    
    
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.1.63 | SUCCESS => {
    
    
    "ansible_facts": {
    
    
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

5.サーバー安装http&mariadb

[root@192 ansible]# yum -y install httpd mariadb-server mariadb

6.初期化

root@192 roles]# ansible-galaxy init lnmp
- Role lnmp was created successfully
- [root@192 roles]# tree lnmp/
lnmp/
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── README.md
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml

7.cp構成ファイル

[root@192 files]# cp /etc/httpd/conf/httpd.conf ./lnmp/files/
[root@192 files]# cp -a /etc/my.cnf ./lnmp/files/

[root@192 files]# cat index.php 
<?php
  phpinfo();
?>

[root@192 files]# tree .  #完成后一共三个文件
.
├── httpd.conf
├── index.php
└── my.cnf

8.スクリプトテンプレートを作成します

[root@192 tasks]# pwd
/etc/ansible/roles/lnmp/tasks

[root@192 tasks]# cat main.yaml 
- name: prepare config
  shell: iptables -F
- name: clean the firewalld
  shell: systemctl stop firewalld

- name: webserver install
  yum: name=httpd state=installed
- name: config file replace
  copy: src="httpd.conf" dest="/etc/httpd/conf/httpd.conf"
- name: provide index page
  copy: src="index.php" dest="/var/www/html"


- name: mysql install
  yum: name=mariadb-server  state=installed
- name: config file replace
  copy: src="my.cnf"  dest="/etc/my.cnf"

- name: install php
  yum: name=php,php-mysql state=installed

- name: start httpd service
  service: name=httpd state=started 
- name: start mariadb service
  service: name=mariadb state=started

9.電話する

[root@192 roles]# pwd
/etc/ansible/roles
[root@192 roles]# cat install_lamp.yml 
- name: LAMP bulid
  remote_user: root
  hosts: web
  roles:
    - lamp

[root@192 roles]# ansible-playbook install_lamp.yml 

10.テスト
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/weixin_45310323/article/details/111415073