Linux运维09

1.总结ansible常用的一些模块和基本的示例
command 模块

shell 模块

script 模块

copy 模块
copy 模块将 ansible 主机上的文件复制到远程主机,此模块具有幂等性。

fetch 模块
从远程主机提取文件至 ansible 的主控端,copy 相反,不支持目录

file 模块
file 模块主要提供文件管理功能,比如创建文件和目录,修改文件和目录,设置文件权限和属性,设置链接等

stat 模块
stat 模块用来获取目标文件的状态,对于 windows 主机,要使用 win_stat 模块

unarchive 模块
unarchive 模块主要用来解压缩或解包,将 ansible 主机或其它主机上的压缩包复制到指定主机,再解压到某个目录 在使用此模块时,要保证远程主机能解压对应的压缩包

archive 模块
archive 模块在远程主机上执行压缩打包命令,此模块的源和目标都在远程主机上

hostname 模块
此模块主要用于修改远程主机的主机名,修改后永久生效

cron 模块
cron 模块用于管理远程主机上的 crontab 定时任务

yum 模块和 apt 模块
yum 模块和 apt 模块用于在远程主机上管理软件包,yum 模块适用于 redhat 系列,apt 适用于 debian 系列
列出指定软件包

更新索引

yum_repository 模块
此模块用来对远程主机上的 yum 仓库配置进行管理
添加和删除

service 模块
service 模块主要用于对远程主机的服务进行管理
启动

user 模块
此模块用于对远程主机进行用户管理
创建用户

删除用户

group 模块
此模块用于对远程主机的组管理
创建

删除

lineinfile 模块
lineinfile 模块主要用于修改远程主机上的文件。

replace 模块
该模块功能与 lineinfile 模块功能类似,也是基于正则匹配的模式来修改文件,但与 lineinfile 不同的是replace 模块用于多行匹配和修改

reboot 模块
reboot 模块主要用于对远程主机进行重启操作

mount 模块
mount 模块用于管理远程主机的挂载

setup 模块
此模块主要用来从远程主机上收集相关信息在 ansible 主机上显示,由于需要收集的信息较多,此模块执行较慢。

debug 模块
此模块可以用于输出信息,并且通过 msg 定制输出的信息内容,功能类似于 echo 命令

sysctl 模块
sysctl 模块用来修改远程主机上的内核参数

pam_limits 模块
此模块主要用于管理远程主机上的资源限制

apt_repository 模块
此模块实现 apt 仓库的配置管理,仅于用 debian 系列的环境中

apt_key 模块
此模块实现 apt 仓库的key 的配置管理,仅于用 debian 系列的环境中

2.编写一个playbook实现Nginx的两种安装过程,安装方式可通过变量传入控制,编译安装和yum安装
yum安装

编译安装



3.编写一个初始化主机的playbook,变量指定系统类型,roccky需要关闭selinux,ubuntu不需要
01. 初始化主机名
02. 替换yum源或apt源
03. 安装时间同步服务器,指向国内的服务器
04. 关闭防火墙,清理相关规则
05. 安装基本软件 vim 等
06. 修改时区为Asia/Shanghai
07. 初始化一个mage用户,拥有sudo权限 ALL=(ALL) NOPASSWD: ALL


  • name: Initialize Host
    hosts: all
    become: yes
    vars:
    system_type: "rocky" # or "ubuntu"

    tasks:

    • name: Set hostname
      hostname:
      name: "{{ inventory_hostname }}"

    • name: Replace yum repo for Rocky
      when: system_type == "rocky"
      block:

      • name: Backup original repo files
        shell: mv /etc/yum.repos.d/CentOS-.repo /etc/yum.repos.d/CentOS-.repo.bak
      • name: Download new repo files
        get_url:
        url: "https://mirrors.aliyun.com/rocky/{{ ansible_distribution_major_version }}/BaseOS/x86_64/os/"
        dest: "/etc/yum.repos.d/rocky-baseos.repo"
      • name: Update yum cache
        yum:
        update_cache: yes
    • name: Replace apt sources for Ubuntu
      when: system_type == "ubuntu"
      block:

      • name: Backup original sources
        copy:
        src: /etc/apt/sources.list
        dest: /etc/apt/sources.list.bak
        remote_src: yes
      • name: Add new sources
        lineinfile:
        path: /etc/apt/sources.list
        line: "deb http://mirrors.aliyun.com/ubuntu/ {{ ansible_distribution_release }} main restricted"
        create: yes
      • name: Update apt cache
        apt:
        update_cache: yes
    • name: Install and configure NTP for Rocky
      when: system_type == "rocky"
      block:

      • name: Install chrony
        yum:
        name: chrony
        state: present
      • name: Configure NTP server
        lineinfile:
        path: /etc/chrony.conf
        regexp: '^server'
        line: "server ntp.aliyun.com iburst"
      • name: Start and enable chrony
        systemd:
        name: chronyd
        state: started
        enabled: yes
    • name: Install and configure NTP for Ubuntu
      when: system_type == "ubuntu"
      block:

      • name: Install chrony
        apt:
        name: chrony
        state: present
      • name: Configure NTP server
        lineinfile:
        path: /etc/chrony/chrony.conf
        regexp: '^server'
        line: "server ntp.aliyun.com iburst"
      • name: Start and enable chrony
        systemd:
        name: chrony
        state: started
        enabled: yes
    • name: Disable SELinux on Rocky
      when: system_type == "rocky"
      selinux:
      state: disabled

    • name: Disable firewall
      systemd:
      name: "{{ 'firewalld' if system_type == 'rocky' else 'ufw' }}"
      state: stopped
      enabled: no

    • name: Install basic software
      package:
      name: "{{ item }}"
      state: present
      loop:

      • vim
      • net-tools
      • curl
      • wget
    • name: Set timezone to Asia/Shanghai
      timezone:
      name: Asia/Shanghai

    • name: Create mage user with sudo privileges
      user:
      name: mage
      shell: /bin/bash
      groups: sudo
      append: yes
      when: system_type == "rocky"

    • name: Add sudoers configuration for mage
      lineinfile:
      path: /etc/sudoers
      state: present
      regexp: '^mage'
      line: 'mage ALL=(ALL) NOPASSWD: ALL'
      validate: 'visudo -cf %s'
      when: system_type == "rocky"

    • name: Create mage user with sudo privileges for Ubuntu
      user:
      name: mage
      shell: /bin/bash
      groups: sudo
      append: yes
      when: system_type == "ubuntu"

    • name: Add sudoers configuration for mage on Ubuntu
      copy:
      content: "mage ALL=(ALL) NOPASSWD: ALL"
      dest: /etc/sudoers.d/mage
      mode: '0440'
      when: system_type == "ubuntu"

4.总结Open-VPN的部署安装过程和基本使用
安装 OpenVPN
sudo apt update
sudo apt install openvpn easy-rsa -y
配置证书和密钥

创建证书管理目录并初始化 PKI 环境:
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
修改 vars 文件以配置 CA 相关信息:
打开 ~/openvpn-ca/vars,根据需要修改以下内容:
export KEY_COUNTRY="CN"
export KEY_PROVINCE="BJ"
export KEY_CITY="Beijing"
export KEY_ORG="MyOrg"
export KEY_EMAIL="admin@example.com"
export KEY_OU="IT"
export KEY_NAME="server"
构建 CA:
source vars
./clean-all
./build-ca
```plaintext
生成服务器端密钥和证书:
./build-key-server server
./build-dh
openvpn --genkey --secret keys/ta.key
生成客户端密钥和证书:
./build-key client1
配置 OpenVPN 服务
创建 OpenVPN 配置文件目录:
sudo cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf.gz /etc/openvpn/
sudo gzip -d /etc/openvpn/server.conf.gz
修改 /etc/openvpn/server.conf 文件:
启用 tls-auth 和 dh 配置:
tls-auth ta.key 0
dh dh.pem
```plaintext
指定服务器端证书:
ca ca.crt
cert server.crt
key server.key
```plaintext
配置 VPN 地址池:
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
启动和测试服务
启动 OpenVPN 服务:
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
检查服务状态:
sudo systemctl status openvpn@server
确保服务器防火墙开放相关端口(默认 UDP 1194):
sudo firewall-cmd --add-port=1194/udp --permanent
sudo firewall-cmd --reload

OpenVPN 客户端配置和连接
配置客户端文件
从服务器复制证书和密钥文件:
scp /etc/openvpn/ca.crt /etc/openvpn/ta.key /etc/openvpn/client1.crt /etc/openvpn/client1.key user@client:/etc/openvpn/
在客户端创建 OpenVPN 配置文件(如 client.ovpn):
client
dev tun
proto udp
remote your-server-ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1
cipher AES-256-CBC
comp-lzo
verb 3
启动客户端连接
安装客户端软件(Linux 下直接安装 openvpn)。
使用以下命令连接 VPN:
sudo openvpn --config client.ovpn
验证连接
连接成功后,通过 ip addr 或 ifconfig 查看是否添加了 VPN 接口(如 tun0)。
测试网络连通性:
ping 10.8.0.1  # 服务器端 VPN 地址
posted on 2024-12-02 17:01  yuleslie  阅读(32)  评论(0)    收藏  举报