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并重新安装,建议先备份相关配置文件,然后按照安装步骤重新执行安装过程,确保安装过程顺利。

阅读剩余
THE END