首页 > 编程知识 正文

python运维脚本实例,ansible除了运维还适合

时间:2023-05-03 13:59:19 阅读:37745 作者:2797

文章目录1.ansible概述1 .部署ansible服务2.1测试ansible服务3. ansible命令语法和模块详细信息3.1命令语法3.2模块详细信息4.1通用基础配置4.2名称类似主机定义4.3Inventory中变量4.1

1.ansible介绍

ansible是一种新出现的自动化运输工具,基于python开发,汇集了许多运输工具(puppet、cfengine、chef、func、fabric )的优点,包括批量系统配置、批量程序部署和

ansible可以同时管理Redhat系统的Linux、Debian系统的Linux和windows主机。 管理节点仅在运行脚本时与远程主机连接,没有特殊的同步机制,因此停电等异常不会影响ansible

ansible基于模块运行,本身没有批量部署能力,而是真正拥有批量部署的ansible运行的模块。 ansible提供了一个简单的框架。主要包括:

连接插件连接插件:负责与被监视方进行通信的主机库存:指定操作的主机是在配置文件中定义监视的主机的各种核心模块。 command模块、自定义模块通过插件实现记录日志邮件等功能。 playbook :部署2.Aamand模块,如果方案执行多个任务,则可以让两个非必需的节点同时执行多个任务

安装yum-yInstallEpel-Release#Epel源代码,通过在线源代码访问配置依赖环境

yum-yinstallansible http://www.Sina.com /

ls/etc/ansibleansible.CFG # ansi ble配置文件hosts#ansible的主仓库。 roles#角色文件,包含有关要管理的远程主机的信息。 playbook 安装ansible软件

vi /etc/ansible/hosts##可以单独添加IP地址,也可以自定义主机池名称以调用所有相关主机[web服务器]#主机池名称192.168.20

ssh-keygen -t rsa#建立不对称密钥#此时交互设置密钥存储路径,并设置私钥ssh-copy-id root@192.168.20.10#,将公钥传递给三台主机。 ssh-copy-id root @ 192.168.20.100 #此时,交互输入对方主机的用户密码。 表示要使用配置为(此时,作为对方根登录)的无交互式代理的ssh-add#添加个人私钥。 #现在,交互输入以前设置的个人私钥2.1以测试ansible服务ansible all -a 'date '

3. ansible指令语法和模块详细信息3.1指令语法基本语法

ansible主机/ip -m模块-a“参数”主机id/IP在管理主机文件中定义的主机id (主机池)或特定主机IP地址(如果为all ),则为所有主机

模块:对于ansible中的各种模块,如果未指定(-m ),则默认使用command

参数:管理命令,根据具体模块确定命令语法

3.2模块详细信息此时生成三个主要文件在/etc/ansible下

ansible-doc -l#列出所有已安装的模块,然后按q退出查询ansible-doc -s模块名称#查询指定模块的说明信息和操作1.command模块

通常用于执行一个linux命令

ansi ble 192.168.20.100-m command-a ' date ' ansiblewebservers-a ' id ' #没有m指定模块,默认情况下使用command,用户信息2.2

用于设置计划任务

ansi ble 192.168.20.10-mcron-a ' minute=' */1 ' job='/usr/QJ dhb/echo hello/opt/test.txt ' name=' tete 时间: minute、hour、day、weekday、mooday

为了管理用户

创建ansi ble 192.168.20.10-muser-a ' name=' use r01 ' ' #用户use r01 ansi ble 192.168.20.10-muser-a

'name="user01" state=absent'#删除用户user01ansible 192.168.20.10 -m user -a 'name="user01" uid=1002 group=user01'#设置user01的uid和属组

4.group模块
用户管理组

ansible 192.168.20.10 -m group -a 'name=web gid=270'#创建组web,设置gid号ansible 192.168.20.10 -m group -a 'name=web state=absent'删除web组

5.copy模块
复制文件、目录及写入内容至文件

ansible all -m copy -a 'src=/etc/hosts dest=/opt/hosts.bak owner=root mode=640'#复制文件,设置属主及权限ansible all -m copy -a 'content="hello" dest=/opt/test'#对文件写入内容

6.file模块
管理文件、目录及创建软连接

ansible all -m file -a 'path=/opt/test state=touch'#创建一个空文件ansible all -m file -a 'path=/opt/test state=absent'#删除某一个文件ansible all -m file -a 'path=/opt/var state=directory mode=755'#创建一个目录并设置权限ansible all -m file -a ‘path=/opt/test owner=web group=web mode=644’#设置文件的属主属组权限

7.ping模块
测试与被控主机的网络连接状态

ansible all -m ping#测试连通性

8.yum模块
管理软件

ansible all -m yum -a 'name=httpd'#yum安装软件ansible all -m yum -a 'name=httpd state-absent'#yum卸载软件

9.service模块
管理服务

ansible all -m service -a 'name=httpd state=started enabled=true'#开启httpd并设为开机自启state状态:started、stopped、status...

9.shell模块
执行多条linux指令、并可以使用重定向、追加符号
特殊参数:
chdir:指定工作目录,在执行对应的命令之前,会先进入到chdir参数指定的目录中,等于cd命令
creates:指定一个文件,当指定的文件存在时,就不执行对应的命令
removes:使用此参数指定一个文件,当指定的文件不存在时,就不执行对应的命令

ansible all -m shell -a 'chdir=/opt/aa echo hello >> test.txt'

10.script模块
执行本地的脚本,使所有被控主机执行脚本操作(脚本只需存在ansible管理节点,被控主机无需存在该脚本)

ansible all -m script -a 'test.sh'

11.setup模块
获取主机所有信息
可配合检索命令,过滤出主机的资源占用、地址信息等所需信息

ansible all -m setup 4.主机清单

ansible默认的主机清单是/etc/ansible/hosts文件
主机清单可以手动设置,也可通过Dynamic inventory动态生成
一般主机名使用FQDN
FQDN:完全合格域名:主机名+域名,例:www.baidu.com

4.1常用基础配置 #直接写入IP、FQDNwww.aa.com192.168.20.10[webservers]#方括号设置组名(组名内可设置多个主机,即主机池)192.168.20.100192.168.20.60 4.2名称类似主机定义 [webservers]www.a[1:50].com#www.a1.com至www.a50.com的所有主机192.168.20.1[0-9]#192.168.20.10-192.168.20.19www.a[a:f].com#www.aa.com-www.af.com的所有主机,字母匹配支持a-f 4.3Inventory中变量

1.主机变量

www.aa.com http_port=80 maxRequestsChild=100#定义该主机http端口号及最大请求数

2.组变量
定义主机名为一个变量,可直接调用

[servers:vars]#定义主机名为变量的组ntp_server=ntp.server.orgnfs_server=nfs.server.org

3.组嵌套
定义多个组在同一个组内

[nginx]192.168.20.10192.168.20.20[tomcat]192.168.20.30192.168.20.40[webservers]nginxtomcat 4.3.1 inventory变量参数 ansible_ssh_host 将要连接的远程主机名,与你想要设定的主机的别名不同的话,可以通过此变量设置ansible_ssh_port ssh端口号,如果不是默认的端口号,通过此变量设置ansible_ssh_user 默认的ssh用户名ansible_ssh_pass ssh密码(这种方式并不安全,我们强烈建议使用–ask-pass或SSH密钥)ansible_ssh_private_key_file ssh使用的私钥文件,适用于有多个密钥,而你不想使用SSH代理的情况ansible_ssh_common_args 此设置附加到sftp,scp和ssh的缺省命令行ansible_sftp_extra_args 此设置附加到默认sftp命令行ansible_scp_extra_args 此设置附加到默认scp命令行ansible_ssh_extra_args 此设置附加到默认ssh命令行ansible_ssh_pipelining 确定是否使用SSH管道。这可以覆盖ansible.cfg中的设置ansible_shell_type 目标系统的ssh类型,默认情况下,命令的执行使用’sh’语法,可设置为’csh’或’fish’ansible_python_interpreter
目标主机的python路径,适用于的情况:系统中有多个python。或者命令路径不是/usr/qjdhb/pythonansible__interpreter 这里的可以是ruby或perl或者其他语言的解释器,作用和-
ansible_python_interpreter类似ansible_shell_executable
这将设置ansible控制器将在目标机器上使用的shell,覆盖ansible.cfg中的配置,默认为/qjdhb/sh

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。