47/120

28681 ワード

apt


ubuntuでcentosのyumの代わりにパッケージマネージャを使用する

yumとの違い

  • httpdパッケージ-->apache 2
  • mariadb --> mysql
  • aptコマンドオプション

  • list-パッケージリスト出力
  • search-パケットの検索
  • show-出力パッケージ詳細
  • install-インストールパッケージ
  • remove-パッケージの削除
  • autoremove-未使用のパッケージを自動的に削除
  • update-更新パッケージインストール可能リスト
  • upgrade-パッケージアップグレード
  • ネットワーク管理


    Netplanツール/etc/netplan/\*.yaml
    vagrant@node3:~$ ls /etc/netplan
    50-cloud-init.yaml  50-vagrant.yaml
    変更を適用
    netplan apply

    その他


    保安
  • RHEL: SELinux
  • Debian: AppArmor
  • ファイアウォール
  • RHEL: FirewallD
  • Debian: UFW
  • Kernel(Netfilter)<--iptablesの代わりに

    翻訳可能な複文


    タスクの下でloopwith_untilloop繰り返し文を構成
    2.5からwith_<lookup>まで.以前使用ansible.builtin.userloop->2.8モジュールタグの二元化を開始

    リスト#リスト#

    with_itemsではなくwith_listloop
    - hosts: 192.168.100.11
      gather_facts: no
    
      tasks:
        - debug:
            msg: "{{ item }}"
          with_items:
            - apple
            - banana
            - carrot
    - hosts: 192.168.100.11
      gather_facts: no
      vars:
        fruits:
          - apple
          - banana
          - carrot
    
      tasks:
        - debug:
            msg: "{{ item }}"
          with_items:
            "{{ fruits }}"
    - hosts: 192.168.100.11
      gather_facts: no
      vars:
        fruits:
          - apple
          - banana
          - carrot
    
      tasks:
        - debug:
            msg: "{{ item }}"
          loop:
            "{{ fruits }}"

    list of hashes(dictionary)

    with_dictではなくwhen
    - name: Add several users
      user:
        name: "{{ item.name }}"
        state: present
        groups: "{{ item.groups }}"
      loop:
        - name: 'testuser1'
          groups: 'wheel'
        - name: 'testuser2'
          groups: 'root'
        #[ {name: 'testuser1', groups: 'wheel'}, {name: 'testuser2', group: 'root'} ]
    - hosts: 192.168.100.11
      gather_facts: no
      vars:
        fruits:
          - name: apple
            count: 2
          - name: banana
            count: 3
    
      tasks:
        - debug:
            msg: "{{ item.name }} / {{ item.count }}"
          loop:
            '{{ fruits }}'

    neted lists

    - name: Give users access to multiple databases
      community.mysql.mysql_user:
        name: "{{ item[0] }}"
        priv: "{{ item[1] }}.*:ALL"
        append_privs: yes
        password: "foo"
      loop: "{{ ['alice', 'bob'] | product(['clientdb', 'employeedb', 'providerdb']) | list }}"

    random_choice

    - name: with_random_choice
      ansible.builtin.debug:
        msg: "{{ item }}"
      with_random_choice: "{{ my_list }}"
    
    - name: with_random_choice -> loop (No loop is needed here)
      ansible.builtin.debug:
        msg: "{{ my_list|random }}"
      tags: random

    翻訳可能条件文


    条件文の使い方
    playbook test
    filters
    タスク使用testキーワード、定義条件filter{{ }}条件を定義するときにtasksカッコXを使用
    - hosts: 192.168.100.11
      vars:
        switch: "on"
      tasks:
        - debug:
            msg: "hello switch on"
          when: switch == "on"
        - debug:
            msg: "hello switch off"
          when: switch == "off"
    条件文でよく使用されるパラメータ
  • ansible_facts["distribution"]
  • ansible_distribution
  • - hosts: wp
      tasks:
        - debug:
            msg: "hello CentOS"
          when: ansible_facts["distribution"] == "CentOS"
        - debug:
            msg: "hello Ubuntu"
          when: ansible_facts["distribution"] == "Ubuntu"

    かへんかんハンドル



    できるだけべき乗等性を満たす
    すべてのモジュール、モジュールのパラメータがべき乗等性を満たしていない

    問題のあるコード

    - hosts: 192.168.100.11
      become: yes
      vars:
        web_svc_port: "80"
      tasks:
        - yum:
            name: httpd
            state: installed
        - lineinfile:
            path: /etc/httpd/conf/httpd.conf
            regexp: '^Listen'
            line: 'Listen {{ web_svc_port }}' 
        - service:
            name: httpd
            state: restarted
            enabled: yes
    24/7サービスの場合、設定を変更するたびに再起動すると、問題が発生します.

    トラブルシューティングコード

    - hosts: 192.168.100.11
      become: yes
      vars:
        web_svc_port: "80"
      tasks:
        - yum:
            name: httpd
            state: installed
        - lineinfile:
            path: /etc/httpd/conf/httpd.conf
            regexp: '^Listen'
            line: 'Listen {{ web_svc_port }}' 
          register: result
        - service:
            name: httpd
            state: started
            enabled: yes
        - service:
            name: httpd
            state: restarted
            enabled: yes
          when: result is changed

    ゲーム、ジョブ名

    - name: Name Test Playbook
      hosts: 192.168.100.11
      tasks:
        - name: task1
          debug:
            msg: hello world
        - name: task2
          debug:
            msg: hello world
        - name: task3
          debug:
            msg: hello world
        - debug:
            msg: hello world
          name: task4

    マニピュレータ


    理由.特定の操作が変更された場合にのみ実行される操作を指定します.
    ハンドラ内のアクションには名前が必要です
    Handler運転の順番は?
  • 通知を受けた処理プログラムに対してのみタスクを実行
  • すべてのタスク(block)が完了すると、プロセッサは
  • を実行します.
  • 通知を受信した回数を考慮せずに1回のみ実行
  • 例)
    - name: handler example
      hosts: 192.168.100.11
      
      tasks:
        - name: task1
          file:
            path: /tmp/test1
            state: touch
          notify:
            - handle2
            - handle1
        #- name: error
        #  command: ls -P
        - name: task2
          file:
            path: /tmp/test2
            state: touch
          notify:
            - handle1
    
      handlers:
        - name: handle1
          debug:
            msg: "handle1"
        - name: handle2
          debug:
            msg: "handle2"
    - name: Handler Example
      hosts: 192.168.100.11
      become: yes
      vars:
        web_svc_port: "80"
      
      tasks:
        - name: Install httpd Package
          yum:
            name: httpd
            state: installed
        - name: Reconfigure httpd service port
          lineinfile:
            path: /etc/httpd/conf/httpd.conf
            regexp: '^Listen'
            line: 'Listen {{ web_svc_port }}' 
          notify:
            - Restart httpd Service
        - name: Start httpd Service
          service:
            name: httpd
            state: started
            enabled: yes 
      handlers:
        - name: Restart httpd Service
          service:
            name: httpd
            state: restarted
            enabled: yes
    ハンドラが実行されず、その後の操作が失敗した場合->ハンドラが実行されていません
    - name: Flush handlers
      meta: flush_handlers
    ansible-playbook test.yaml --force-handlers
    マークに失敗して試合を終了した場合でも、プログラムの実行を強制する設定.

    トランスファブロック


    ブロック=複数のタスクを含むグループ
    ブロックの機能
    1.複数のタスクに共通キーワードを付与可能(ex:条件文)
    2.rescuealwaysblockブロックはエラー処理に使用できるrescue常にブロックを実行blockブロックにエラーが発生した場合のみ実行always常時運転
    - hosts: 192.168.100.11
    
      tasks:
        - block:
            - debug:
                msg: hello world
            - command: /usr/bin/false
            - debug:
                msg: hello world2
          ignore_errors: yes
    
          rescue:
            - debug:
                msg: It's rescue
    
          always:
            - debug:
                msg: It's Always

    許容ラベル


    タスクをマークでき、特定のタグのタスクしか実行できません.
    - hosts: 192.168.100.11
      gather_facts: no
    
      tasks:
        - debug:
            msg: "web server stage"
          tags:
            - stage
        - debug:
            msg: "web server product"
          tags:
            - prod
        - debug:
            msg: "web server all"
    allラベル:すべてのタスクが
    untaggedタグ:タグが設定されていないタスクに属する
    ansible-playbook test.yaml --tags=stage,prod
    チェックマーク
    ansible-playbook test.yaml --list-tasks
    ansible-playbook test.yaml --list-tags

    タスクせいぎょ


    step

    ansible-playbook test.yaml --step

    特定のタスクから開始

    ansible-playbook test.yaml --start-at-task="task3"
    ansible-playbook test.yaml --start-at-task="task3" --limit 192.168.100.12