[root@ansible ansible]
- hosts: all
remote_user: root
vars:
ports:
tasks:
- name: cp conf
template: src=for1.conf.j2 dest=/data/for1.conf
[root@ansible ansible]
{% for port in ports %}
server{
listen {{ port }}
{% endfor %}
[root@ansible ansible]
[root@node-1 ~]
server{
listen 81
server{
listen 82
[root@ansible ansible]
- hosts: all
remote_user: root
vars:
ports:
- listen_port: 81
- listen_port: 82
tasks:
- name: cp conf
template: src=for1.conf.j2 dest=/data/for1.conf
[root@ansible ansible]
{% for port in ports %}
server{
listen {{ port.listen_port }}
{% endfor %}
[root@ansible ansible]
- hosts: all
remote_user: root
vars:
ports:
- web1:
port: 81
name: web1
rootdir: /data/website1
- web2:
port: 82
name: web2
rootdir: /data/website2
tasks:
- name: cp conf
template: src=for3.conf.j2 dest=/data/for1.conf
[root@ansible ansible]
{% for port in ports %}
server{
listen {{ port.port }}
servername {{ port.name }}
documentroot {{ port.rootdir }}
{% endfor %}
[root@ansible ansible]
[root@node-1 ~]
server{
listen 81
servername web1
documentroot /data/website1
server{
listen 82
servername web2
documentroot /data/website2
示例:if操作
[root@ansible ansible]
- hosts: all
remote_user: root
vars:
ports:
- web1:
port: 81
rootdir: /data/website1
- web2:
port: 82
name: web2
rootdir: /data/website2
tasks:
- name: cp conf
template: src=for4.conf.j2 dest=/data/for4.conf
[root@ansible ansible]
{% for port in ports %}
server{
listen{{ port.port }}
{% if port.name is defined %}
servername{{ port.name }}
{% endif %}
documentroot{{ port.rootdir }}
{% endfor %}
[root@ansible ansible]
[root@node-1 ~]
server{
listen81
documentroot/data/website1
server{
listen82
servernameweb2
documentroot/data/website2
运行Ansible剧本Github Action
在选定主机上执行给定Ansible剧本的动作。
如果在PATH有ansible-playbook命令可用,则它ansible-playbook在任何操作系统上运行。
- name : Run playbook
uses : dawidd6/action-ansible-playbook@v2
with :
playbook : deploy.yml
directory : ./
key : ${{secrets.SSH_PRIVATE_KEY}}
inventory : |
[all]
example.com
[group1]
example.com
vault_password : ${{secrets.VAULT_PASSWORD}}
options : |
--limit group1
--extra-vars hello=there
--verbose
Ansible Playbook捆绑包(APB)
Ansible Playbook Bundle(APB)是一个轻量级的应用程序定义(元容器)。 它们用于定义复杂的应用程序,部署配置,部署和服务组,并将其部署到运行的集群。 通过利用的功能, 提供更多的功能和简单的配置。 APB具有以下功能:
元数据包含在部署期间使用的必需/可选参数的列表。
利用现有的Ansible角色/剧本投资。
具有apb.yml中定义的命名剧本和元数据的目录下的操作。
开发人员工具来驱动指导方法。
轻松修改或扩展。
-创建Ansible Playbook捆绑包的分步教程
-Ansible Playbook套装的整体设计
-Ansible Playbook捆绑包的深入说明
apb cli工具的安装和使用
Broker-有关运行更多信息
Ansible是一个自动化统一配置管理工具,自动化主要体现在Ansible集成了丰富模块以及功能组件,可以通过一个命令完成一系列的操作,进而能减少重复性的工作和维护成本,可以提高工作效率。
1.连接插件connection plugins用于连接主机 用来连接被管理端
2.核心模块core modules连接主机实现操作, 它依赖于具体的模块来做具体的事情
3.自定义模块custom modules根据自己的需求编写具体的模块
4.插件plugins完成
直接执行不行
[root@test shell]# ansible server9 -m shell -a "cat /etc/passwd|grep -v 'nologin\|shutdown\|sync\|halt'|awk -F : '{print $1}'"
server9 | SUCCESS | rc=0 >>
root:x:0:0:root:/root:/bin/bas...
大家有没有一些疑惑,为什么在一些教程中,命令需要用单引号,我们也约定熟成地学习跟着教程来使用单引号,但我们有时候也会忘记到底是单引号还是双引号,于是不小心记成了双引号,发现也能达到我们想要的结果,于是乎——单引号和双引号到底有什么区别呢?
YAML中的字符串通常不需要放在引号里,即使字符串中包含空格。字符串可以用双引号或单引号括起。
编写多行字符串有两种方式。可以使用管道符表示要保留字符串中的换行字符
[root@ansible pla
加载自己的配置文件,默认/etc/ansible/ansible.cfg
加载自己对应的模块文件,如command
通过ansible将模块命令生成对应的临时py文件,并将该文件传输至远程服务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/xxx.py文件
给文件+x执行
执行并返回结果
删除临时py文件,sleep 0退出
ansible 的执行状态
root@ubuntu20:~# grep -A 14 '\[colors\]' /
文章目录一、yum安装ansible二、相关文件介绍`2.1.配置文件`a、/etc/ansible/ansible.cfg解释b、/etc/ansible/hosts格式`2.2.可执行文件`三、配置基于root用户Key的验证四、ansible命令执行过程五、执行状态六、常用模块`指定远程主机用户,并sudo到root用户`
参考视频:https://edu.51cto.com/lesson/306549
一、yum安装ansible
yum -y install epel-release
Ansible概述
通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为的失误。Ansable通过本身集成非常丰富的模块实现各种管理任务,其自身模块超过上千个。
Ansible基于Python开发,运维工程师对其二次开发相对较容易。
Ansible丰富的内置模块,基本可以满足一切需求。
管理模式非常简单,一条命令可以影响上千台机器。
无客户端模式,底层通过SSH进行通信。
Ansible没有客户端,也不需要被管理主机添加代理程序,通过SSH完成底层通信,Ansible要
文章目录简介旧循环语句(版本在2.5之前仅有的)with_items自定义with_list循环列表小练习:在受管主机中创建4个文件借助注册函数,多次执行循环中的不同命令for循环实现遍历嵌套列表的定义with_list关键字with_flattened关键字上述三种关键字的区别with_together关键字with_cartesian关键字with_indexed_items关键字单层列表时两...