ansible第二天

Day02 ansible

一.学习ansible模块

1.1模块的简介

​ Ansible 模块是 Ansible 提供的可重复使用的脚本,用于执行各种任务,如管理文件、安装软件包、配置服务、管理用户等。

​ Ansible 模块可以使用各种编程语言编写,如 Python、Bash 等。Ansible 内置了大量的模块,可以满足常见的自动化需求,例如:

  • 操作文件:file、template、lineinfile 等模块可以用于创建、删除、修改文件,修改文件权限、所有权和内容等。

  • 管理软件包:apt、yum、dnf、pacman、brew 等模块可以用于安装、升级、卸载软件包。

  • 管理服务:systemd、service 等模块可以用于管理服务,如启动、停止、重启、重载等操作。

  • 运行命令:command、shell、raw 等模块可以用于在目标主机上执行命令,如运行 shell 脚本、复制文件、打包等操作。

  • 配置用户和权限:user、group、sudo 等模块可以用于创建、删除、修改用户和组,配置 sudo 权限等。

    帮助信息查看:

    # ansible-doc -l    # 查看所有模块信息
    # ansible-doc module_name     # 查看模块帮助信息
    

除了内置的模块外,Ansible 还提供了丰富的插件和扩展机制,可以编写自己的模块,以满足特定的自动化需求。

1.2模块的使用

1)ad-hoc —— 临时的,在ansible中是指需要快速执行,并且不需要保存的命令。说白了就是执行 简单的命令——一条命令。对于复杂的命令则为 playbook (剧本)

语法: ansible  <pattern>  -m <module_name>  -a <arguments>   
pattern: inventory文件里定义的主机组名,主机名,IP,别名等,all表示所有的主机,支持通配符,正则
		 : - 冒号,多个组,组名之间用冒号隔开
		  *web* - 组名或主机名中含web的
		   webservers[0] - webservers组中的第一台主机, -1表示最后一台主机, 支持切片(正):[1:2]表示组中的第二台和第三台
-m module_name: 模块名称,默认为command
-a arguments: 传递给模块的参数
-i file_name: 指定inventory文件, 默认为/etc/ansible/hosts
-k  : 询问密码.如果没有传密钥到被管理端,必须要接此选项

2)在 playbook 中使用模块

​ 首先,在 playbook 中需要指定要在哪些主机上执行任务,这可以通过 inventory 文件来定义。然后,在 playbook 中定义任务和相关的模块和参数

​ 例如:

---
- name: Install Apache
  hosts: web
  become: yes
  tasks:
    - name: Install Apache package
      apt:
        name: apache2
        state: present
    - name: Start Apache service
      service:
        name: apache2
        state: started

​ 该 playbook 包含一个名为 Install Apache 的任务,该任务会在主机组 web 中的所有主机上执行。该任务使用 apt 模块安装 Apache 软件包,并使用 service 模块启动 Apache 服务。

二.学习playbook

2.1 Playbook简介

​ Playbook 是 ansible 用于配置,部署,和管理被控节点的剧本,通过 playbook 的详细描述,执行其中的一系列 tasks ,可以让远端主机达到预期的状态 playbook 就像 Ansible 控制器给被控节点列出的的一系列 to-do-list ,而被控节点必须要完成, 也可以这么理解,playbook 字面意思,即剧本,现实中由演员按照剧本表演 在Ansible中,这次由计算机进行表演,由计算机安装,部署应用,提供对外服务,以及组织计算机处理各种各样的事情 可以使用 Playbooks 来描述你想在远程主机执行的策略或者执行的一组步骤过程等 如果说 Ansible 模块是工作中的工具的话,那么 playbooks 就是方案

2.2Playbook 组成

Target section - 定义将要执行 playbook 的远程主机组 ,主机组的定义通常在 Ansible inventory 文件中进行,也可以在 Playbook 中定义主机组,例如:

- hosts: webservers

Variable section - 定义 playbook 运行时需要使用的变量 。变量可以在 Playbook 的任务和模块中使用,也可以在 inventory 文件中定义。例如:

vars:
  http_port: 80

Task section - 定义将要在远程主机上执行的任务列表 。每个任务都是 Ansible 执行的一组操作。任务由一些列属性构成,如名称、主机、变量、模块、参数等。例如:

- name: Install Apache
  apt:
    name: apache2
    state: present

Handler section - 定义 task 执行完成以后需要调用的任务 。这个部分通常用于在多个 task 执行完成后执行某个操作,例如重启服务或通知其他系统。Handlers 可以在 Playbook 中定义,也可以在角色或任务文件中定义。例如:

- name: Restart Apache
  service:
    name: apache2
    state: restarted

2.3YAML语法简介

​ playbook由YAML语言编写。

​ YAML(全称为 “YAML Ain’t Markup Language”)是一种用来表示数据序列化的格式。它采用了类似于缩进的语法,旨在提供一种易于阅读和编写的数据格式。

以下是一些 YAML 的基本语法:

1.使用缩进来表示数据结构。

2.使用冒号来分隔键和值。

3.使用“-”符号表示列表或数组。

4.在值后面可以添加注释,注释以“#”符号开头。

5.文件的第一行应该以 “—” (三个连字符)开始,表明YAML文件的开始。

name: John Smith
age: 30
address:
  street: Main St.
  city: Anytown
  state: NY
  zip: '12345'

在这个示例中,每个键值对使用冒号来分隔,缩进用于表示数据结构。address 键的值是一个嵌套结构,使用缩进表示。

注意,在 YAML 中,字符串可以使用单引号或双引号括起来。如果字符串包含特殊字符,比如冒号或空格等,可以使用引号将其括起来,或者使用单引号。

2.4语法检测

语法检测: # ansible-playbook --syntax-check /path/to/playbook.yaml

测试运行 : # ansible-playbook -C /path/to/playbook.yaml

运行: # ansible-playbook /path/to/playbook.yaml

2.5playbook的颜色

绿色代表执行成功,系统保持原样

黄色代表系统状态发生改变

红色代表执行失败,显示错误输出

三.使用Playbook批量安装编译nginx

3.1安装编译 Nginx 所需的依赖项

  - name: Install dependencies for compiling Nginx
    yum:
      state: present
      name:
      - build-essential
      - libpcre3
      - libpcre3-dev
      - libssl-dev
      - zlib1g-dev

3.2下载并解压缩 Nginx 的源代码

- name: Download Nginx source code
  get_url:
    url: "http://nginx.org/download/nginx-1.21.3.tar.gz"
    dest: "/tmp/nginx.tar.gz"
- name: Extract Nginx source code
  unarchive:
    src: "/tmp/nginx.tar.gz"
    dest: "/tmp"
    remote_src: true
    extra_opts: "--strip-components=1"

3.3配置 Nginx,指定安装路径、配置文件路径、PID 文件路径以及启用 HTTP SSL 模块等选项

- name: Configure Nginx
  shell: 
    cmd: "./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/var/run/nginx.pid --with-pcre --with-http_ssl_module
    chdir: "/tmp/nginx-1.21.3"

3.4编译 Nginx

- name: Compile Nginx
   shell:
     cmd: make
     chdir: "/tmp/nginx-1.21.3"

3.5安装 Nginx

- name: Compile Nginx
   shell:
     cmd: make install
     chdir: "/tmp/nginx-1.21.3"

3.6启动nginx并设置为自启动

 - name: Start Nginx service
   systemd:
     name: nginx
     state: started
     enabled: yes
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值