基础配置 -作业.note

noteId: C0D61FA4B46444528C884A55015102B5 · 原始路径:/ALL/Ansible 自动化管理/Ansible 配置合集/Ansible 自动化管理-Linux/基础配置 -作业.note · 图片:5 · 附件待处理:0

一、巩固练习:
 
1、使用 Ansible来初始化Debian 系统:
 
(1)在 Ansible 主控端上安装:
apt install -y ansible python3 python3-passlib sshpass python3-paramiko
 
(2)在 Ansible 被控端上安装:
·先配置ip地址:
192.168.10.11
192.168.10.12
192.168.10.13
apt install -y ssh
 
(3)配置 Ansible :
·配置主配置文件:
mkdir /etc/ansible
cd /etc/ansible
vim ansible.cfg
[defaults]

inventory = /etc/ansible/hosts
    //定义主机清单位置
library = /usr/share/ansible    //定义模块存储的位置

forks = 50    //定义最大课连接数量

remote_user = elysia    //定义要使用的远程用户


remote_port = 22        //定义远程客户端的ssh端口

host_key_checking = False 

timeout = 60        //ssh 超时时间为 60

log_path = /var/log/ansible.log
 
(4)配置 提权:
 
两种方式:
(提权)方式一:
在 hosts 主机清单中书写变量:
·配置hosts主机清单:
cd /etc/ansible
vim hosts
all:

  hosts:

    LIN1:

      ansible_host: 192.168.10.11



    LIN2:

      ansible_host: 192.168.10.12


    LIN3:

      ansible_host: 192.168.10.13


  vars:            //配置提权

    ansible_become: True

    ansible_become_method: su

    ansible_become_user: root

    ansible_become_pass: Skills39!

    ansible_user: elysia

    ansible_pass: Skills39!

    ansible_port: 22

 
(提权)方式二:
使用 group_vars 提权:
cd /etc/ansible
mkdir group_vars
cd group_vars
vim all.yml
ansible_user: elysia

ansible_password: Skills39!

ansible_become: True

ansible_become_user: root

ansible_become_method: su

ansible_become_password: Skills39!
 
 
 
 
2、在 Ansible 主控端上生成 ssh 密钥对:
ssh-keygen
 
3、编辑 ansible-init 剧本:
cd /etc/ansible
mkdir playbook
cd playbook
vim 01-ansible-init.yml
---

- name: init debian

  hosts: all

  gather_facts: False

 
  tasks:

    - name: Install Python3

      ansible.builtin.raw: apt install -y python3 python3-passlib -y

      changed_when: False

  

    - name: Install Sudo

      apt:

        name: sudo

        state: present

        update_cache: false

 
    - name: Write Sudo

      community.general.sudoers:

        name: Elysia Can Sudo

        user: elysia

        commands: ALL

        nopassword: True  

        state: present

 
    - name: Copy ssl pem

      ansible.posix.authorized_key:

        user: elysia

        state: present

        key: "{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"
·运行:
ansible-playbook 01-ansible-init.yml
 
 
 
二、综合实践:
 
创建一个 system-init 剧本,初始化debian系统:
·安装 vim bash-completion
·设置主机名
·设置时区
 
 
1、修改 hosts 主机清单:
all:

  hosts:

    LIN1:

      ansible_host: 192.168.10.11


      hostname: "Server01"    //填写主机名

    LIN2:

      ansible_host: 192.168.10.12

      hostname: "Server02"    //填写主机名

    LIN3:

      ansible_host: 192.168.10.13

      hostname: "Server03"    //填写主机名

  vars:

#    ansible_become: True

#    ansible_become_method: su

#    ansible_become_user: root

#    ansible_become_pass: Skills39!

#    ansible_user: elysia

#    ansible_pass: Skills39!

#    ansible_port: 22
 
 
2、编写 system-init 剧本:
cd /etc/ansible/playbook
vim 02-system-init.yml
---

- name: init Debian system

  hosts: all

  gather_facts: False

 
  tasks:

    - name: Install vim, bash-completion

      apt:

        name:

          - vim

          - bash-completion

        state: present

        update_cache: False

 
    - name: Start "dbus" Server

      service:

        name: dbus

        state: started

 
    - name: Set HostName

      hostname:

        name: "{{ hostname }}"

        # 这里的 hostname 引用的是 主机清单中书写的 hostname: 
·运行:
ansible-playbook 02-system-init.yml
 
3、配置时区:
继续修改剧本;
vim 02-system-init.yml
---

- name: init Debian system

  hosts: all

  gather_facts: False

 
  tasks:

    - name: Install vim, bash-completion

      apt:

        name:

          - vim

          - bash-completion

        state: present

        update_cache: False

 
    - name: Start "dbus" Server

      service:

        name: dbus

        state: started

 
    - name: Set HostName

      hostname:

        name: "{{ hostname }}"

 
    - name: Set timezone

      timezone:

        name: Asia/Shanghai

 
    - name: Set local

      command: localectl set-locale LANG=zh_CN.UTF-8
·运行:
ansible-playbook 02-system-init.yml
 
 
三、延申扩展:
1、构建包含组、变量等的清单:
vim /etc/ansible/hosts
all:

  hosts:

    LIN1:

      ansible_host: 192.168.10.11
      hostname: "Server01"


    LIN2:

      ansible_host: 192.168.10.12
      hostname: "Server02"

    LIN3:

      ansible_host: 192.168.10.13
      hostname: "Server03"

  vars:            //定义所有 hosts 的变量

#    ansible_become: True

#    ansible_become_method: su

#    ansible_become_user: root

#    ansible_become_pass: Skills39!

#    ansible_user: elysia

#    ansible_pass: Skills39!

#    ansible_port: 22

children:            

  children:

    email:     //定义组:email

      hosts:

        LIN1:

        LIN2:

    vpn:        //定义组:vpn

      hosts:

        LIN2:

        LIN3:

    web:       //定义组:web

      hosts:

        LIN1:

        LIN3:
 
2、创建剧本以使用模块实现更多的特性:
(1)使用 service模块创建剧本,关闭/启动 apache2服务:
vim 03-start_stop_service.yml 
---

- name: Service Mode

  hosts: all
  

  tasks:

    - name: Stop Service

      service: 

        name: apache2

        state: stopped

 
    - name: Start Service

      service:

        name: apache2

        state: started
运行:
ansible-playboo 03-start_stop_service.yml