ansible Ad-Hoc YAML剧本

这篇具有很好参考价值的文章主要介绍了ansible Ad-Hoc YAML剧本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ansible、Ad-Hoc、YAML剧本

1.简介

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

2.部署

1.dns resolve

ansible服务器:192.168.70.42 配置阿里yum源
ansible客户机:192.168.70.35 192.168.70.36 配置阿里yum源

服务器和客户机都做好域名解析

vim /etc/hosts
192.168.70.35 host1
192.168.70.36 host2
192.168.70.42 ansible

2.install ansible (ansible服务器)

yum install ansible -y

3.ssh-key免密连接

ssh-keygen   //一路回车 有yes填yes

ssh-copy-id root@192.168.70.35	//发送公钥
ssh-copy-id root@192.168.70.36

ssh root@192.168.70.35   //测试连接
ssh root@192.168.70.36

4.ansible基础

1.自定义主机清单 (ansible机器)

vim /etc/ansible/hosts
host1
host2

2.测试连通性

ansible localhost -m ping  //测试host1连通性 -m指定模块

ansible host1 -m ping o  //一行简简洁输出

3.know_hosts

ansible host2 -m ping -u root -k -o //没有配置ssh免密可以交互式密码验证登录 如果是第一次连接会报错 需使用ansible host2 -m ping 交互yes之后才能

`去掉(yes/no)的询问`
vim /etc/ssh/ssh_config
StrictHostKeyChecking no
systemctl restart sshd

ansible host2 -m ping -u root -k -o //再次测试

4.请注意ping和ssh

ping的通不代表ansible连接的上,ping ICMP:网际消息管理协议
ansible的ping事探测ssh程序是否连接。不是icmp协议,如果关比sshd服务,ping可以成功,ansible测试会依旧失败。

5.Inventory主机清单

1.增加主机组

vim /etc/ansible/hosts
[webserver]
host1 ansible_ssh_user='root' 
host2 ansible_ssh_user='root'

ansible webserver -m ping -o

2.增加用户名没密码(没设置免密登录,可以增加用户名密码)

vim /etc/ansible/hosts
host1 ansible_ssh_user='root' ansible_ssh_pass='123456'
host2 ansible_ssh_user='root' ansible_ssh_pass='123456'

//或者
host[1:2] ansible_ssh_user='root' ansible_ssh_pass='123456'

3.增加端口(host)

vim /etc/ssh/sshd_config
Port 22 改成Port 2222
systemctl restart sshd

测试连接
ansible host1 -m ping  //会发现失败 ansible默认sshd端口还是22

回到ansible 修改用户host的端口
vim /etc/ansible/hosts
host1 ansible_ssh_user='root' ansible_ssh_pass='123456' ansible_ssh_port='2222'  //指定ssh端口

再次测试
ansible host1 -m ping

4.组:变量

[webserver]
host1 ansible_ssh_port='2222'
host2 ansible_ssh_port='2222'

[webserver:vars]
ansible_ssh_user='root'
ansible_ssh_pass='123456'

5.子分组 (将不同的分组进行组合) 为了实验方便我们先把host的sshd 端口改回默认

vim /etc/ansible/hosts
[apache]
host1
[nginx]
host2
[webserver:children]
apache
nginx

ansible webserver -m ping -o  //测试

6.自定义主机列表

vim hostlist
[dockers]
host1
host2

ansible -i hostlist dockers -m ping -o  //测试

6.Ad-Hoc点对点模式

临时的,在ansible中是指需要快速执行的单条命令,并且不需要保存的命令。对于复杂的命令则为 playbook。

1.shell模块

ansible webserver -m shell -a 'hostname' -o  //查看主机名称

ansible webserver -m shell -a 'yum install mariadb -y' -o  //安装mariadb

ansible webserver -m shell -a 'touch /tmp/777.txt' -o  //创建文件

2.复制模块

ansible-doc copy  //查看帮助文档

ansible webserver -m copy -a 'src=/etc/hosts dest=/tmp/2.txt'  //copy 如果和原先文件一样 不会进行拷贝

ansible webserver -m copy -a 'src=/etc/hosts dest=/tmp/3.txt owner=root group=root mode=777'

ansible webserver -m copy -a 'src=/etc/hosts dest=/tmp/3.txt owner=root group=root mode=777 backup=yes'

3.用户模块

ansible-doc user  //查看帮助文档

ansible webserver -m user -a 'name=xux state=present'  //创建用户

echo '123456' | openssl passwd -1 -stdin  //系统存储的是密文 需要将输入的密码转化为加密后的密文
ansible webserver -m user -a 'name=xux password="$1$g93P3CoY$YPuV8anNPa8HBhnfMncB60"'  //修改密码

ansible webserver -m user -a 'name=xux shell=/sbin/nologin append=yes'  //修改用户属性

ansible webserver -m user -a 'name=xux state=absent'  //删除用户

4.软件包管理

ansible-doc yum  //查看帮助文档

ansible webserver -m yum -a 'name="*" stale=lastest'  //升级所有包

ansible webserver -m yum -a 'name=vsftpd state=present'  //安装vsftpd

ansible webserver -m yum -a 'name=vsftpd state=absent'  //卸载vsftpd

ansible webserver -m yum -a 'name=vsftpd state=latest'  //升级vsftpd

5.服务模块

ansible-doc service  //查看帮助文档

ansible webserver -m service -a 'name=vsftpd state=started'  //开启httpd服务

ansible webserver -m service -a 'name=vsftpd state=stopped'  //关闭httpd服务

ansible webserver -m service -a 'name=vsftpd state=restarted'  //重启httpd服务

ansible webserver -m service -a 'name=vsftpd state=started enabled=yes'  //开启开机自启

ansible webserver -m service -a 'name=vsftpd state=started enabled=no'  //关闭开机自启

6.文件模块

ansible-doc file  //查看帮助文档

ansible webservice -m file -a 'path=/tmp/11.txt mode=771 state=touch'  //创建文件

ansible webserver -m file -a 'path=/tmp/asb mode=770 state=directory'  //创建目录

7.收集模块

ansible-doc setup  //查看帮助文档

ansible host1 -m setup  //列出常见常熟

ansible host1 -m setup -a 'filter=ansible_all_ipv4_addresses'  //查询ip地址

7.YAML

YAML Ain’t Markup Language-非标记语言

示例:通过YAML编写一个简单的剧本,完成web的部署,配置,启动的全过程。

1.准备

ansible all -m yum -a 'name=httpd state=removed' -o  //清理一下环境
yum install -y httpd  //准备配置文件
mkdir apache
cd apache
cp -rf /etc/httpd/conf/httpd.conf .
grep '^Listen' httpd.conf
Listen 8080  //修改端口

2.编写剧本

编写
vim apache.yaml
- hosts: host2
  tasks:
  - name: install apache packages
    yum: name=httpd state=present
  - name: copy apache conf
    copy: src=./httpd.conf dest=/etc/httpd/conf/httpd.conf
  - name: ensure apache is running
    service: name=httpd state=started enabled=yes
    
测试
ansible-playbook apache.yaml --syntax-check
ansible-playbook apache.yaml --list-tasks
ansible-playbook apache.yaml --list-hosts

执行
ansible-playbook apache.yaml

3.优化

如果我们在配置文件中修改了apache端口号为9000,那么我们再次重启会发现文件会被拷贝过去,但是服务器并没没有重启。
因为剧本中写的服务启动,并没有重启服务。需要优化一下剧本代码,如果执行copy语句那么notify会触发,接着会执行handlers中的语句重启服务。
- hosts: webserver
  tasks:
  - name: install apache packges for xux
    yum: name=httpd state=latest
  - name: copy apache conf file for xux
    copy: src=./httpd.conf dest=/etc/httpd/conf/httpd.conf
    notify: restart apache service for xux
  - name: ensure apache si running
    service: name=httpd state=started enabled=yes
  handlers:
  - name: restart apache service for xux
    service: name=httpd state=restarted

8.Role-角色扮演

roles则是在ansible中,playbooks的目录组织结构。将代码或文件进行模块化,成为roles的文件目录组织结构,易读,代码可重用,层次清晰。

示例:通过role远程部署nginx并配置

1.准备目录

nginx 角色名
files  普通文件
handlers  触发器程序
tasks  主任务
templates 金甲模板(有变量的文件)
vars 自定义变量
[root@localhost ~]# mkdir roles/nginx/{files,handlers,tasks,templates,vars} -p

touch roles/site.yaml roles/nginx/{handlers,tasks,vars}/main.yaml

echo 1234 > roles/nginx/files/index.html

yum install -y nginx && cp /etc/nginx/nginx.conf roles/nginx/templates/nginx.conf.j2

[root@localhost ~]# tree roles/
roles/
├── nginx
│   ├── files
│   │   └── index.html
│   ├── handlers
│   │   └── main.yaml
│   ├── tasks
│   │   └── main.yaml
│   ├── templates
│   └── vars
│       └── main.yaml
└── site.yaml

2.编写任务

vim roles/nginx/tasks/main.yaml
- name: install epel-release packge
  yum: name=epel-release state=latest
- name: install nginx packge
  yum: name=nginx state=latest
- name: copy index.html
  copy: src=index.html dest=/usr/share/nginx/html/index.html
- name: copy nginx.conf template
  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
  notify: restart nginx
- name: make sure nginx service running
  service: name=nginx state=started enabled=yes
Template:
Template模板在运用时与copy模块类似,区别在于可以在Ansible的Playbook执行的时候,根据一定的条件灵活的设置要复制文件中的部分关键内容。
在Ansible中,Templat模板使用jinjia2语言进行配置,模板文件的后缀名为.j2。

3.准备配置文件

vim roles/nginx/templates/nginx.conf.j2
worker_processes auto; 改成 worker_processes {{ ansible_processor_cores }};  //ansible内置变量

worker_connections 1024; 改成 worker_connections {{ worker_connections }};  //自定义变量

4.编写变量

vim roles/nginx/vars/main.yaml
worker_connections: 10240

5.编写处理程序

vim roles/nginx/handlers/main.yaml
---
- name: restart nginx
  service: name=nginx state=restarted

6.编写剧本

vim roles/site.yaml
- hosts: webserver
  roles:
  - nginx

7.实施

cd roles
ansible-playbook site.yaml --syntax-check  //测试
ansible-playbook site.yaml  //实施剧本

文章内容主要参考:b站磊哥5.Ansible 自动化运维实战文章来源地址https://www.toymoban.com/news/detail-662871.html

到了这里,关于ansible Ad-Hoc YAML剧本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ansible的playbook剧本

    (1)Tasks:任务,即通过 task 调用 ansible 的模块将多个操作组织在一个 playbook 中运行 (2)Variables:变量 (3)Templates:模板 (4)Handlers:处理器,当changed状态条件满足时,(notify)触发执行的操作 (5)Roles:角色 ==Ansible在执行完某个任务之后并不会立即去执行对应的han

    2024年02月12日
    浏览(40)
  • Ansible之playbook剧本

    playbook 是 ansible 用于配置,部署,和管理被控节点的剧本。通过 playbook 的详细描述,执行其中的一系列 tasks ,可以让远端主机达到预期的状态。playbook 就像 Ansible 控制器给被控节点列出的的一系列 to-do-list ,而被控节点必须要完成。也可以这么理解,playbook 字面意思,即剧

    2024年02月09日
    浏览(38)
  • ansible的剧本

    1.1 playbooks的组成 Tasks 任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 Variables 变量 Templates 模板 Handlers 处理器,当changed状态条件满足时,(notify)触发执行的操作 Roles 角色 1.2 playbooks剧本范例 Ansible在执行完某个任务之后并不会立即去执行对应的h

    2024年02月21日
    浏览(36)
  • ansible进阶-剧本调试方法

    目录 1、调试方法 2、实例 2.1    Debug模块  2.2    tags标签 2.3    忽略错误 1、调试方法 具体方法 应用场景 debug标签 执⾏剧本的时候输出剧本的执⾏流程,⼀般配合register⼀起使⽤. 输出facts变量自定义变量 tags标签 给⼀些模块加上标签,运⾏剧本的时候可以运⾏指定标签的内容

    2024年04月22日
    浏览(27)
  • XCode打包IOS应用发布App Store和Ad Hoc测试

    此文章为最新IOS打包教程,每一步都是操作截图 文章包含大量图片说明,请注意流量消耗 由于工具之间的版本不一致,所以注意区分 如果有任何问题,欢迎大家留言一起沟通学习 首先通过 本地钥匙串访问(Mac自带的工具)创建 CertificateSigningRequest.certSigningRequest 文件,步骤

    2024年02月04日
    浏览(55)
  • Ansible Playbook剧本配置文件

    目录 一、执行文件 修改hosts文件 Playbook的核心元素包含: 用法 实验案例 1.语法检查 2.预测试 3.列出主机 4.列出任务 5.列出标签 6.进行测试 7.测试查看 二、触发器 handlers触发器的实验实例如下 预执行 执行 查看结果 三、角色 /etc/ansible/roles/为角色集合,该目录下有自定义的各

    2024年02月16日
    浏览(42)
  • Ansible的脚本 --- playbook 剧本

    目录 playbook的简介 什么是playbook playbook组成 应用实例 Templates 模块 tags 模块 Roles 模块  Ansible Playbook 是设定自动化任务的一种蓝图,可在无需人工干预或有限干预的前提下执行复杂的 IT 操作。Ansible Playbook 对一组或一类共同构成 Ansible 清单的主机执行。         Ansible Playbo

    2024年02月21日
    浏览(43)
  • 【Ansible 的脚本 --- playbook 剧本】

    playbooks 本身由以下各部分组成 将yum安装的nginx里面的配置文件进行修改,后传输到对应的远程主机 解压wordpress压缩文件,放入到对应的html网页目录底下 进行传输到远程主机里的网页页面目录上 使用浏览器进行访问测试

    2024年02月14日
    浏览(32)
  • Ansible的脚本-playbook 剧本

       1.playbook介绍         playbook是ansible用于配置,部署,和管理被控节点的剧本。通过playbook的详细描述,执行其中的tasks,可以让远端主机达到预期的状态。playbook是由一个或多个”play”组成的列表。 当对一台机器做环境初始化的时候往往需要不止做一件事情,这时使用

    2024年02月02日
    浏览(35)
  • Ansible 的脚本-playbook 剧本

    1.playbooks 本身由以下各部分组成 (1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 (2)Variables:变量 (3)Templates:模板 (4)Handlers:处理器,当changed状态条件满足时,(notify)触发执行的操作 (5)Roles:角色 2.示例 3.定义、引用变量

    2024年02月06日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包