ansible-playbook安装和配置nginx、mariadb

一、实验环境:

7.10 还原至快照ansible、7.11还原至快照 新系统、7.12还原至快照 新系统

二、ansible机器上将本地 SSH 公钥部署到远程服务器(192.168.7.11)的 root 用户账户

[root@ansible ~]# ssh-copy-id root@192.168.7.11    将本地 SSH 公钥部署到远程服务器(192.168.7.11)的 root 用户账户,从而为后续的免密码登录(基于密钥认证)做好准备

三、创建安装数据库的任务和变量的目录、创建安装nginx的文件、任务和变量的目录

[root@ansible ~]# mkdir -p roles/ins_nginx/{files,tasks,vars}	创建安装nginx的文件、任务和变量的目录

四、创建剧本

[root@ansible ~]# vim playbook_sample.yaml 创建剧本
- hosts: servers	主机使用servers单元,
  become: yes		以管理员权限执行
  become_method: sudo	执行方式以sudo(普通用户用suso)
  roles:			角色
    - ins_mariadb 安装数据库
    - ins_nginx   安装nginx

五、创建安装数据库的主配置文件

[root@ansible ~]# vim roles/ins_mariadb/vars/main.yml 创建安装数据库的主配置文件
mariadb_package:		数据库的数据包
  - mariadb-server		数据库的服务端
  - python3-PyMySQL		python3支持数据库的软件

六、创建安装数据库任务的主配置文件

[root@ansible ~]# vim roles/ins_mariadb/tasks/main.yml 创建安装数据库任务的主配置文件

- name: mariadb is installed	任务名称:安装数据库
  dnf:							采用dnf模块
    name: "{{mariadb_package}}"	安装数据库软件包大括号表示之前定义的变量(数据库的服务端、python3支持数据库的软件)
    state: present
  tags: install_mariadb			打安装数据库的标记
    
- name: mariadb is running and enabled 任务名称:启动数据库并设置开机启动
  service:			采用服务模块
    name: mariadb	启动数据库并设置开机启动
    state: started
    enabled: yes

七、创建安装nginx变量的主配置文件

[root@ansible ~]# vim roles/ins_nginx/vars/main.yml	创建安装nginx变量的主配置文件
nginx_package:		nginx数据包
  - nginx			数据包内容nginx

八、创建安装nginx任务的主配置文件

[root@ansible ~]# vim roles/ins_nginx/tasks/main.yml		创建安装nginx任务的主配置文件
- name: nginx is installed		任务1:安装nginx
  dnf:							采用dnf模块
    name: "{{ nginx_package }}"		安装nginx数据包
    state: installed
  tags: install_nginx			打nginx标记

- name: edit nginx.conf			任务2:编辑nginx配置文件
  lineinfile:					使用lineinfile模块(lineinfile作用:用于在文件中插入、修改或删除行)
    path: /etc/nginx/nginx.conf	nginx配置文件的路径
    regexp: "^ *server_name  _;"	匹配以任何数量空格开头的server_name  _匹配项,这是一种正则表达式的表示方法
    line: "server_name {{ ansible_fqdn }};"	 使用ansible内置变量ansible_fqdn注入完全限定域名
  tags: edit_nginx.conf			打编辑nginx配置文件的标记

- name: nginx is running and enabled	第三个任务:启动nginx,并设置开机启动
  service:						采用服务模块
    name: nginx					启动nginx,并设置开机启动
    state: started
    enabled: yes

- name: put index.html			任务4:创建测试页面
  copy:							采用copy模块
    src: index.html				源文件index.html
    dest: /usr/share/nginx/html	目标文件目录:
    owner: root					用户:root
    group: root					组:root
    mode: 0644					权限:644

- name: check nginx				任务5:检查nginx
  uri:							采用uri模块
url: http://{{ ansible_fqdn }} 使用统一资源标识符,完整域名(就是网址的全名称)

九、在安装nginx文件的目录下创建测试页面

[root@ansible ~]# echo "nginx index page" > roles/ins_nginx/files/index.html	在安装nginx文件的目录下创建测试页面

十、运行playbook_sample的剧本

[root@ansible ~]# ansible-playbook playbook_sample.yaml 运行playbook_sample的剧本

十一、server11和server12机器上查看nginx和mariadb的状态

十二、本机上测试验证:

十三、相关知识:

+--- playbook.yml                  +--- playbook_sample.yml
|                                  |
+--- roles/                        +--- roles/
     |                                  |
     +--- role01/                       +--- ins_mariadb/
          |                             |    |
          +--- files/                   |    +--- vars/
          |                             |    |    |
          +--- templates/               |    |    +--- main.yml
          |                             |    +--- tasks/
          +--- tasks/                   |         |
          |                             |         +--- main.yml
          +--- handlers/                |
          |                             +--- ins_nginx/
          +--- vars/                              |
          |                                       +--- files/
          +--- defaults/                          |    |
          |                                       |    +--- index.html
          +--- meta/                              +--- vars/
                                                  |    |
                                                  |    +--- main.yml
                                                  |
                                                  +--- tasks/
                                                       |
                                                       +--- main.yml


该任务通过lineinfile模块实现了对Nginx配置文件的动态修改
正则匹配规则
regexp: "^ *server_name _;"
匹配以任意数量空格开头的server_name _;配置项

动态内容替换
line: "server_name {{ ansible_fqdn }};"
使用Ansible内置变量ansible_fqdn注入完全限定域名
实现配置从默认占位符_到实际主机名的转换


url: http://{{ ansible_fqdn }} 这种形式借助 Ansible 的变量机制,能够方便地根据目标主机的实际情况动态生成特定的 URL,以满足各种与网络服务相关的配置和应用需求

Playbook的lineinfile是一种Ansible模块,用于在文件中插入、修改或删除行。

lineinfile模块的主要参数如下:

path:必须参数,指定要操作的文件。
line:使用此参数指定文本内容。
regexp:使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换,当删除文本时,如果有多行文本都能被匹配,这些行都会被删除。
insertbefore:借助此参数可以将文本插入到“指定的行”之前。

Ansible的Copy模块是一个非常实用的功能,它允许用户在远程服务器之间复制文件和目录。

Copy模块的语法如下:

yaml- name: Copy file or directory 
  copy: 
    src: /path/to/source 
    dest: /path/to/destination 
    owner: owner_name 
    group: group_name 
    mode: file_permissions



其中,src表示源文件或目录的路径,dest表示目标文件或目录的路径。可以在复制文件的同时指定所需的权限和所有权信息。Ansible的Copy模块不仅可以复制文件,还可以复制目录。如果想复制整个目录,只需指定源目录和目标目录即可。


Ansible的uri模块是用于发送HTTP、HTTPS请求到web服务端点,并能够处理不同的HTTP请求,如GET、POST、PUT等。

在ansible uri模块中,可以通过使用url、method、用户名、密码等参数来发送不同类型的请求

Tomcat 默认使用 HTTP 协议的 8080 端口和 HTTPS 协议的 8443 端口

统一资源标识符(Uniform Resource Identifier,URI)是一个用于标识某一互联网资源名称的字符串。 该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作

在WWW上,每一信息资源都有统一的且在网上的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位器)

1)完整域名 fqdn
2)主要用正则表达式匹配到相应字符串并进行替换。主要使用的选项是rege
3)统一资源标识符(Uniform Resource Identifier,URI)是一个用于标识某一互联网资源名称的字符串

4)统一资源定位系统(uniform resource locator;URL)是因特网的万维网服务程序上用于指定信息位置的表示方法。它最初是由蒂姆·伯纳斯·李发明用来作为万维网的地址

register
用于注册一个变量,保存命令的结果 (shell 或 command 模块),这个变量可以在后面的 task、when 语句或模板文件中使用。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇