导读:本篇文章首席CTO笔记来给大家介绍有关django如何调用ansible的相关内容,希望对大家有所帮助,一起来看看吧。
如何在django中使用ansible-playbook命令执行yaml 文件
一、安装
1、安装第三方epel源
centos 5的epel
rpm -ivh
rpm -ivh
17:01:30 # cat /etc/issue
CentOS release 6.5 (Final)
Kernel \r on an \m
由于是6版本所以安装6的epel
yum install ansible
如果需要自定义module或者想阅读源码、使用最新版本,可以去github里下载源码
git clone
17:22:08 # cd /etc/ansible/
root@ip-10-10-10-10:/etc/ansible
17:23:27 # ll
total 12
-rw-r--r-- 1 root root 5113 Dec 29 03:00 ansible.cfg
-rw-r--r-- 1 root root 965 Dec 29 03:00 hosts
其中ansible.cfg是配置文件,hosts是管理主机信息
17:24:44 # cat hosts
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 # ansible 127* -m ping
SSH password:
127.0.0.1 | success {
"changed": false,
"ping": "pong"
}
root@ip-10-10-10-10:/etc/ansible
16:21:05 # ansible 172* -m ping
SSH password:
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 # ansible vpn -m shell -a "echo $TERM" -u test --private-key=denglei -K
SSH password:
sudo password [defaults to SSH password]:
172.17.0.10 | success | rc=0
xterm
11:30:44 # ansible vpn -m copy -a "src=/tmp/server dest=/tmp/server" -u test --private-key=denglei -K
SSH password:
sudo password [defaults to SSH password]:
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 # ansible vpn -m shell -a "ls -l /tmp/" -u test --private-key=denglei -K
SSH password:
sudo password [defaults to SSH password]:
172.17.0.10 | success | rc=0
total 76
-rw-r--r-- 1 root root 41692 May 21 13:02 config
-rw-r--r-- 1 root root 1228 Jun 12 18:24 install_pptpd_vpn.sh
-rw-rw-r-- 1 test test 7 Jun 13 19:33 server
-rw-r--r-- 1 root root 82 Jun 12 18:21 test.log
-rw-r--r-- 1 root root 290 Jun 12 18:21 test.sh
-rw-r--r-- 1 root root 2444 Apr 28 2012 vpn_centos6.sh
-rw------- 1 root root 727 Jun 10 18:21 yum_save_tx-2014-06-10-18-21UrqDAp.yumtx
-rw-rw-r-- 1 zabbix zabbix 3124 Jun 12 21:32 zabbix_agentd.log
-rw-rw-r-- 1 zabbix zabbix 5 Jun 12 21:32 zabbix_agentd.pid
11:35:09 # ansible vpn -m shell -a "cat /tmp/server" -u test --private-key=denglei -K
SSH password:
sudo password [defaults to SSH password]:
172.17.0.10 | success | rc=0
server
还有另外一个模块file,可以修改用户与权限
13:50:07 # ansible vpn -m shell -a "ls -l /tmp/server" -u test --private-key=denglei -K
SSH password:
sudo password [defaults to SSH password]:
172.17.0.10 | success | rc=0
-rw-rw-r-- 1 test test 7 Jun 13 19:33 /tmp/server
server文件是664权限,用户与组都是test
13:51:17 # ansible vpn -m file -a "dest=/tmp/server mode=755 owner=root group=root" -u test --private-key=denglei -K
SSH password:
sudo password [defaults to SSH password]:
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 # ansible vpn -m shell -a "ls -l /tmp/server" -u test --private-key=denglei -K
SSH password:
sudo password [defaults to SSH password]:
172.17.0.10 | success | rc=0
-rwxr-xr-x 1 root root 7 Jun 13 19:33 /tmp/server
14:20:30 # ansible vpn -m yum -a "name=nmap state=installed" -u test --private-key=denglei -K
SSH password:
sudo password [defaults to SSH password]:
172.17.0.10 | success {
"changed": true,
"msg": "",
"rc": 0,
"results": [
"Loaded plugins: fastestmirror, security\nLoading mirror speeds from cached hostfile\n * epel: mirrors.hust.edu.cn\nSetting up Install Process\nResolving Dependencies\n-- Running transaction check\n--- Package nmap.x86_64 2:5.51-3.el6 will be installed\n-- Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nInstalling:\n nmap x86_64 2:5.51-3.el6 Base 2.7 M\n\nTransaction Summary\n================================================================================\nInstall 1 Package(s)\n\nTotal download size: 2.7 M\nInstalled size: 9.7 M\nDownloading Packages:\nRunning rpm_check_debug\nRunning Transaction Test\nTransaction Test Succeeded\nRunning Transaction\n\r Installing : 2:nmap-5.51-3.el6.x86_64 1/1 \n\r Verifying : 2:nmap-5.51-3.el6.x86_64 1/1 \n\nInstalled:\n nmap.x86_64 2:5.51-3.el6 \n\nComplete!\n"
]
}
三、playbook配置管理
A.进行一下shell模块操作,测试删除文件
先查看一下客户端的server-test是否存在
[root@puppet ansible]# ansible vpn -m shell -a "ls -l /tmp/server-test" -u test --private-key=/root/denglei -k
SSH password:
172.17.0.10 | success | rc=0
-rw-rw-r-- 1 test test 7 Jun 14 00:37 /tmp/server-test
然后写一个删除的playbook
[root@puppet ansible]# cat test.yml
---
- hosts: vpn
remote_user: test
tasks:
- name: delete /tmp/server-test
shell: rm -rf /tmp/server-test
[root@puppet ansible]# ansible-playbook test.yml --private-key=/root/denglei -k
[WARNING]: The version of gmp you have installed has a known issue regarding
timing vulnerabilities when used with pycrypto. If possible, you should update
it (ie. yum update gmp).
SSH password:
PLAY [vpn] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [172.17.0.10]
TASK: [delete /tmp/server-test] ***********************************************
changed: [172.17.0.10]
PLAY RECAP ********************************************************************
172.17.0.10 : ok=2 changed=1 unreachable=0 failed=0
[root@puppet ansible]# ansible vpn -m shell -a "ls -l /tmp/server-test" -u test --private-key=/root/denglei -k
SSH password:
172.17.0.10 | FAILED | rc=2
ls: cannot access /tmp/server-test: No such file or directory
B.进行一下template模块操作,测试文件传输
[root@puppet ansible]# cat copy.yml
---
- hosts: vpn
remote_user: test
tasks:
- name: copy local server to client /tmp/server-test
template: src=/tmp/server dest=/tmp/server-test
[root@puppet ansible]# ansible-playbook copy.yml --private-key=/root/denglei -k
[WARNING]: The version of gmp you have installed has a known issue regarding
timing vulnerabilities when used with pycrypto. If possible, you should update
it (ie. yum update gmp).
SSH password:
PLAY [vpn] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [172.17.0.10]
TASK: [copy local server to client /tmp/server-test] **************************
changed: [172.17.0.10]
PLAY RECAP ********************************************************************
172.17.0.10 : ok=2 changed=1 unreachable=0 failed=0
[root@puppet ansible]# ansible vpn -m shell -a "ls -l /tmp/server-test" -u test --private-key=/root/denglei -k
SSH password:
172.17.0.10 | success | rc=0
-rw-rw-r-- 1 test test 7 Jun 14 17:07 /tmp/server-test
C.使用service模块,测试一下服务重启
python——Django项目开发:配置项目/static/路径,调用css、img、js等静态文件
在Django项目开发中,不能像正常web开发一样通过 'imgs/bg.jpg' 访问本地静态文件,需要做一些配置,才能实现静态文件的访问。
一、首先在项目根路径下新建一个static文件夹,然后在static文件夹下可以新建相应的css、imgs、js等文件夹,用于存放css、img、js等静态文件。
二、项目配置
1、打开settings.py,在底部添加:
2、打开urls.py,在 urlpatterns 中添加:(注意,如果你在blog目录下也建立了urls.py,那么就得在blog/urls.py中做修改。别忘了import settings):
(不过我经过实测,不加这一个,也可以完成静态文件的访问)
3、在html模板最上面添加:
然后在需要的地方按照这个格式进行调用,如:
最后重新运行项目,img等本地静态文件就可以被django找到了,这时模板对应的页面就可以显示使用img等文件了。
初学者,求教django1.8 如何调用python3.4脚本的问题
下面来看下在python3.4中,如何与Linux交互的。 在python里面可以操作linux的命令有 1,os.system("cmd") 2,os.open("cmd") 3,spawn* 4,subprocess 在最新的python里,推荐使用subprocess来与shell通信
Django配置Celery执行异步和同步任务(tasks))
celery是一个基于python开发的简单、灵活且可靠的分布式任务队列框架,支持使用任务队列的方式在分布式的机器/进程/线程上执行任务调度。采用典型的生产者-消费者模型,主要由三部分组成:
比如系统上线前后台批量导入历史数据,发送短信、发送邮件等耗时的任务
1.安装RabbitMQ,这里我们使用RabbitMQ作为broker,安装完成后默认启动了,也不需要其他任何配置
Ubuntu linux安装
CentOS Linux 安装
苹果mac 安装需要配置
配置环境变量 (苹果用户)
启动rabbitmq-server
2.安装celery
3.celery用在django项目中,django项目目录结构(简化)如下
4.创建 oa/celery.py 主文件
5.在 oa/__init__.py 文件中增加如下内容,确保django启动的时候这个app能够被加载到
6.各应用创建tasks.py文件,这里为 users/tasks.py
7.views.py中引用使用这个tasks异步处理
8.启动celery
9.这样在调用post这个方法时,里边的add就可以异步处理了
定时任务的使用场景就很普遍了,比如我需要定时发送报告给老板~
1. oa/celery.py 文件添加如下配置以支持定时任务crontab
3.启动celery beat,celery启动了一个beat进程一直在不断的判断是否有任务需要执行
结语:以上就是首席CTO笔记为大家整理的关于django如何调用ansible的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~
以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的互联网后端知识。希望您喜欢!
版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。