centos安装paramiko?centos7.2
ansible如何与django结合(2023年最新整理)
导读:今天首席CTO笔记来给各位分享关于ansible如何与django结合的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
如何在django中使用ansible-playbook命令执行yaml文件
一、安装
1、安装第三方epel源
centos5的epel
rpm-ivh
rpm-ivh
17:01:30#cat/etc/issue
CentOSrelease6.5(Final)
Kernel\ronan\m
由于是6版本所以安装6的epel
yuminstallansible
如果需要自定义module或者想阅读源码、使用最新版本,可以去github里下载源码
gitclone
17:22:08#cd/etc/ansible/
root@ip-10-10-10-10:/etc/ansible
17:23:27#ll
total12
-rw-r--r--1rootroot5113Dec2903:00ansible.cfg
-rw-r--r--1rootroot965Dec2903:00hosts
其中ansible.cfg是配置文件,hosts是管理主机信息
17:24:44#cathosts
172.17.0.2:49154
172.17.0.4:49155
[zabbix]
172.17.0.2:49154
172.17.0.4:49155
[vpn]
172.17.0.10
16:20:57#ansible127*-mping
SSHpassword:
127.0.0.1|success{
"changed":false,
"ping":"pong"
}
root@ip-10-10-10-10:/etc/ansible
16:21:05#ansible172*-mping
SSHpassword:
172.17.0.5|success{
"changed":false,
"ping":"pong"
}
172.17.0.4|success{
"changed":false,
"ping":"pong"
}
172.17.0.2|success{
"changed":false,
"ping":"pong"
}
如果你有多台服务器的话,想并发运行,可以使用-f参数,默认是并发5
11:30:35#ansiblevpn-mshell-a"echo$TERM"-utest--private-key=denglei-K
SSHpassword:
sudopassword[defaultstoSSHpassword]:
172.17.0.10|success|rc=0
xterm
11:30:44#ansiblevpn-mcopy-a"src=/tmp/serverdest=/tmp/server"-utest--private-key=denglei-K
SSHpassword:
sudopassword[defaultstoSSHpassword]:
172.17.0.10|success{
"changed":true,
"dest":"/tmp/server",
"gid":505,
"group":"test",
"md5sum":"e8b32bc4d7b564ac6075a1418ad8841e",
"mode":"0664",
"owner":"test",
"size":7,
"src":"/home/test/.ansible/tmp/ansible-1402630447.45-253524136818424/source",
"state":"file",
"uid":503
}
去客户端查看文件是否传输过来
11:34:57#ansiblevpn-mshell-a"ls-l/tmp/"-utest--private-key=denglei-K
SSHpassword:
sudopassword[defaultstoSSHpassword]:
172.17.0.10|success|rc=0
total76
-rw-r--r--1rootroot41692May2113:02config
-rw-r--r--1rootroot1228Jun1218:24install_pptpd_vpn.sh
-rw-rw-r--1testtest7Jun1319:33server
-rw-r--r--1rootroot82Jun1218:21test.log
-rw-r--r--1rootroot290Jun1218:21test.sh
-rw-r--r--1rootroot2444Apr282012vpn_centos6.sh
-rw-------1rootroot727Jun1018:21yum_save_tx-2014-06-10-18-21UrqDAp.yumtx
-rw-rw-r--1zabbixzabbix3124Jun1221:32zabbix_agentd.log
-rw-rw-r--1zabbixzabbix5Jun1221:32zabbix_agentd.pid
11:35:09#ansiblevpn-mshell-a"cat/tmp/server"-utest--private-key=denglei-K
SSHpassword:
sudopassword[defaultstoSSHpassword]:
172.17.0.10|success|rc=0
server
还有另外一个模块file,可以修改用户与权限
13:50:07#ansiblevpn-mshell-a"ls-l/tmp/server"-utest--private-key=denglei-K
SSHpassword:
sudopassword[defaultstoSSHpassword]:
172.17.0.10|success|rc=0
-rw-rw-r--1testtest7Jun1319:33/tmp/server
server文件是664权限,用户与组都是test
13:51:17#ansiblevpn-mfile-a"dest=/tmp/servermode=755owner=rootgroup=root"-utest--private-key=denglei-K
SSHpassword:
sudopassword[defaultstoSSHpassword]:
172.17.0.10|success{
"changed":true,
"gid":0,
"group":"root",
"mode":"0755",
"owner":"root",
"path":"/tmp/server",
"size":7,
"state":"file",
"uid":0
}
root@ip-10-10-10-10:/etc/ansible
13:51:31#ansiblevpn-mshell-a"ls-l/tmp/server"-utest--private-key=denglei-K
SSHpassword:
sudopassword[defaultstoSSHpassword]:
172.17.0.10|success|rc=0
-rwxr-xr-x1rootroot7Jun1319:33/tmp/server
14:20:30#ansiblevpn-myum-a"name=nmapstate=installed"-utest--private-key=denglei-K
SSHpassword:
sudopassword[defaultstoSSHpassword]:
172.17.0.10|success{
"changed":true,
"msg":"",
"rc":0,
"results":[
"Loadedplugins:fastestmirror,security\nLoadingmirrorspeedsfromcachedhostfile\n*epel:mirrors.hust.edu.cn\nSettingupInstallProcess\nResolvingDependencies\n--Runningtransactioncheck\n---Packagenmap.x86_642:5.51-3.el6willbeinstalled\n--FinishedDependencyResolution\n\nDependenciesResolved\n\n================================================================================\nPackageArchVersionRepositorySize\n================================================================================\nInstalling:\nnmapx86_642:5.51-3.el6Base2.7M\n\nTransactionSummary\n================================================================================\nInstall1Package(s)\n\nTotaldownloadsize:2.7M\nInstalledsize:9.7M\nDownloadingPackages:\nRunningrpm_check_debug\nRunningTransactionTest\nTransactionTestSucceeded\nRunningTransaction\n\rInstalling:2:nmap-5.51-3.el6.x86_641/1\n\rVerifying:2:nmap-5.51-3.el6.x86_641/1\n\nInstalled:\nnmap.x86_642:5.51-3.el6\n\nComplete!\n"
]
}
三、playbook配置管理
A.进行一下shell模块操作,测试删除文件
先查看一下客户端的server-test是否存在
[root@puppetansible]#ansiblevpn-mshell-a"ls-l/tmp/server-test"-utest--private-key=/root/denglei-k
SSHpassword:
172.17.0.10|success|rc=0
-rw-rw-r--1testtest7Jun1400:37/tmp/server-test
然后写一个删除的playbook
[root@puppetansible]#cattest.yml
---
-hosts:vpn
remote_user:test
tasks:
-name:delete/tmp/server-test
shell:rm-rf/tmp/server-test
[root@puppetansible]#ansible-playbooktest.yml--private-key=/root/denglei-k
[WARNING]:Theversionofgmpyouhaveinstalledhasaknownissueregarding
timingvulnerabilitieswhenusedwithpycrypto.Ifpossible,youshouldupdate
it(ie.yumupdategmp).
SSHpassword:
PLAY[vpn]********************************************************************
GATHERINGFACTS***************************************************************
ok:[172.17.0.10]
TASK:[delete/tmp/server-test]***********************************************
changed:[172.17.0.10]
PLAYRECAP********************************************************************
172.17.0.10:ok=2changed=1unreachable=0failed=0
[root@puppetansible]#ansiblevpn-mshell-a"ls-l/tmp/server-test"-utest--private-key=/root/denglei-k
SSHpassword:
172.17.0.10|FAILED|rc=2
ls:cannotaccess/tmp/server-test:Nosuchfileordirectory
B.进行一下template模块操作,测试文件传输
[root@puppetansible]#catcopy.yml
---
-hosts:vpn
remote_user:test
tasks:
-name:copylocalservertoclient/tmp/server-test
template:src=/tmp/serverdest=/tmp/server-test
[root@puppetansible]#ansible-playbookcopy.yml--private-key=/root/denglei-k
[WARNING]:Theversionofgmpyouhaveinstalledhasaknownissueregarding
timingvulnerabilitieswhenusedwithpycrypto.Ifpossible,youshouldupdate
it(ie.yumupdategmp).
SSHpassword:
PLAY[vpn]********************************************************************
GATHERINGFACTS***************************************************************
ok:[172.17.0.10]
TASK:[copylocalservertoclient/tmp/server-test]**************************
changed:[172.17.0.10]
PLAYRECAP********************************************************************
172.17.0.10:ok=2changed=1unreachable=0failed=0
[root@puppetansible]#ansiblevpn-mshell-a"ls-l/tmp/server-test"-utest--private-key=/root/denglei-k
SSHpassword:
172.17.0.10|success|rc=0
-rw-rw-r--1testtest7Jun1417:07/tmp/server-test
C.使用service模块,测试一下服务重启
ansible总结
ansible是一种自动化运维工具,基于paramiko开发的,并且基于模块化工作,Ansible是一种集成IT系统的配置管理、应用部署、执行特定任务的开源平台,它是基于python语言,由Paramiko和PyYAML两个关键模块构建。集合了众多运维工具的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的.
ansible被定义为配置管理工具,配置管理工具通常具有以下功能:
常用的自动化运维工具技术特性比较:
ansible系统由控制主机和被管理主机组成,控制主机不支持windows平台
部署简单,只需要在控制主机上部署ansible环境,被控制端上只要求安装ssh和python2.5以上版本,这个对于类unix系统来说相当与无需配置.
Ansible任务执行模式分为以下两种:
ansible配置文件查找顺序
ansible配置文件
ansible有许多参数,下面我们列出一些常见的参数:
ansible的主要功用在于批量主机操作,为了便捷地使用其中的部分主机,可以在inventoryfile中将其分组命名。默认的inventoryfile为/etc/ansible/hosts。
inventoryfile可以有多个,且也可以通过DynamicInventory来动态生成。
Inventory文件格式:
inventory其他的参数
ansible通过ssh实现配置管理、应用部署、任务执行等功能,因此,需要事先配置ansible端能基于密钥认证的方式联系各被管理节点。
ansible命令使用语法:
例如:
可以通过ansible-doc-l列出所有可用的module,常用的module有:
ansible-smodule-name可以查看指定module的用法,或者参看官方帮助文档:
playbook是由一个或多个“play”组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓task无非是调用ansible的一个module。将多个play组织在一个playbook中,即可以让它们联同起来按事先编排的机制同唱一台大戏。
下面是一个简单示例:
playbooks的组成部分
执行过程:
playbook安装配置apache实战
ansilbe自1.2版本引入的新特性,用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。简单来讲,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们的一种机制。角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中。
一个roles的案例如下所示:
在playbook中,可以这样使用roles:
也可以向roles传递参数:
也可以用条件来使用roles:
ansible运行playbook时会启动很多ssh连接来执行复制文件,运行命令这样的操作.openssh支持这样一个优化,叫做sshMultiplexing,当使用这个sshMultiplexing的时候,多个连接到相同主机的ssh回话会共享相同的TCP连接,这样就只有第一次连接的时候需要进行TCP三次握手.
ansible会默认使用sshMultiplexing特性,一般不需要更改配置,相关的配置项为:
ansible执行过程中,他会基于调用的模块生成一个python脚本,然后将python脚本复制到主机上,最后执行脚本.ansible支持一个优化,叫做pipelining,在这个模式下ansible执行脚本时并不会去复制它,而是通过管道传递给ssh会话,这会让ansible的ssh会话从2个减少到1个,从而节省时间.
pipelining默认是关闭的,因为他需要确认被管理主机上的/etc/sudoers文件中的requiretty没有启用,格式如下:
ansible开启pipelining方法,修改ansible.cfg配置文件:
ansibleplaybook会默认先收集fact信息,如果不需要fact数据可以在playbook中禁用fact采集:
也可以全局禁用fact采集:
另一种解决方案就是使用fact缓存,目前ansible支持下面几种fact缓存:
JSON文件做fact缓存示例
ansible把采集到的fact写入控制主机的json文件中,如果文件已经存在,那么ansible不会再去主机上采集fact
启用JSON文件缓存,修改ansible.cfg文件:
ansible默认并发数是5,可以用下面两种方法修改并发数:
ansible内置多种云计算相关模块,如aws,openstack,docker等,下图是
centos7安装python3.11完整教程(完整有效)
为了确保您的网络工程工作顺利进行,下面将为您详细介绍如何在CentOS 7系统上安装Python 3.11的完整教程。请确保您的Linux环境为CentOS 7,并且能够正常访问互联网。我们建议直接安装Python 3的最新版本,因为Python 2与网络工程领域的关系较小。
安装Python 3.11的步骤如下:
1.**安装Python 3**:让我们开始安装Python 3的过程。安装完成后,您将能够使用Python 3执行各种操作。
2.**安装网工配置模块**:接下来,安装常用的网工配置模块paramiko和netmiko。验证安装是否成功,只需在Python 3环境中引入这些模块,确保没有出现任何错误。
3.**环境准备**:至此,您已经成功安装了一个适合网络工程师使用的Python 3环境,现在可以尽情地进行网络工程相关的开发和维护工作。
在安装过程中,您可能会遇到以下问题:
1.**报错:'No package openssl11 available'**:解决此问题的方法是确保已安装EPEL(企业版Linux扩展包)。您可以使用以下命令进行安装:
2.**在编译过程中遇到报错**:在使用`make`进行编译时,可能会遇到错误提示,如“无法构建ssl模块!Python要求OpenSSL 1.1.1或更高版本”。此错误主要是因为较新版本的Python 3开始依赖OpenSSL 11进行支持。
3.**删除并重新安装Python 3**:如果需要从现有系统中删除Python 3并重新安装,建议先备份相关配置文件,然后按照安装步骤重新执行安装过程,确保安装过程顺利。