小编Mic*_*ael的帖子

ansible:几行的lineinfile?

有一个模块lineinfile在文件中添加一行,有没有办法添加几行?

我不想使用模板,因为您必须提供整个文件.我只是想在现有文件中添加一些东西而不必知道文件已包含的内容,因此模板不是一个选项.

ansible

153
推荐指数
6
解决办法
13万
查看次数

ansible:包括角色中的角色?

是否可以在角色中重用角色?我不是指通过在角色的meta/main.yml文件中定义依赖项,而是直接将角色包含在另一个角色的tasks/main.yml中?

例如,我在角色簿中定义了几个基本角色,在角色中定义了一些更高级别的角色.我希望高级角色除了某些特定任务外还包括一些基本角色.

playbooks/

  rolebooks/
    some_role/

  roles/
    webtier/
      tasks/
        main.yml
Run Code Online (Sandbox Code Playgroud)

在playbooks/roles/webtier/tasks/main.yml中:

- shell: echo 'hello'
- { role: rolebooks/some_role }
- shell: echo 'still busy'
Run Code Online (Sandbox Code Playgroud)

谢谢

ansible ansible-playbook

62
推荐指数
3
解决办法
4万
查看次数

在ansible剧本中用户vs sudo vs sudo_user

我已经阅读了Ansible文档,但我仍然对ansible playbooks中的以下三个参数感到困惑:user,sudo,sudo_user.

我尝试了以下不同组合参数的playbooks:

  1. user:deploy => Works

  2. user:deploy和sudo:True => 挂起git任务

  3. user:deploy,sudo:True和sudo_user:deploy => Works

sudo_user实际上做了什么?何时以及为什么要使用这些组合?

- hosts: all
  user: deploy
  sudo: True
  sudo_user: deploy

  tasks:
      - name: Ensure code directory
        file: dest=/home/deploy/code state=directory

      - name: Deploy app
        git: repo=git@bitbucket.org:YAmikep/djangotutorial.git dest=/home/deploy/code
Run Code Online (Sandbox Code Playgroud)

谢谢

sudo ansible

60
推荐指数
1
解决办法
6万
查看次数

错误请求400:nginx/gunicorn

我已经按照本教程进行了操作:http://blog.wercker.com/2013/11/25/django-16-part3.html我现在正试图让它在Vagrant本地工作.我不是想使用Wercker.

安装完所有内容后,我尝试访问该网站,但每次都收到错误请求(400)错误.我不知道这是由于nginx还是gunicorn中的问题.

它们都有一个日志条目,所以至少我知道请求一直通过gunicorn并且不会在nginx级别停止.

问题在哪里?Gunicorn?nginx的?

这是gunicorn和nginx的日志.

我看到favicon丢失了,但这不应该阻止页面显示正确吗?

Gunicorn:

 >>> cat /var/local/sites/hellocities/run/gunicorn.error.log
10.0.0.1 - - [28/Jan/2014:07:05:16] "GET / HTTP/1.0" 400 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36"
10.0.0.1 - - [28/Jan/2014:07:09:43] "GET / HTTP/1.0" 400 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36"
Run Code Online (Sandbox Code Playgroud)

Nginx的:

>>> cat /var/log/nginx/hellocities-access.log
10.0.0.1 - - [28/Jan/2014:07:05:16 +0000] "GET / HTTP/1.1" 400 37 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, …
Run Code Online (Sandbox Code Playgroud)

django nginx gunicorn

33
推荐指数
2
解决办法
3万
查看次数

用$(函数等)启动javascript代码

我正在研究Backbone和来自http://todomvc.com/的todo示例应用程序. 我注意到有三种方法可以在文件中启动代码:

$(function() {
 // code here
});

$(function( $ ) {
 // code here
});

(function() {
 // code here
}());
Run Code Online (Sandbox Code Playgroud)

我不明白这些差异,何时我应该使用另一个.

我也看到一些人使用它来启动他们的代码:

$(document).ready(function(){
  // code here
});
Run Code Online (Sandbox Code Playgroud)

从我所看到的,这是完整的写作方式吗?

以更一般的方式,我是否应该始终将我的javascript代码包含在每个文件中?

谢谢你的建议.

javascript jquery backbone.js

29
推荐指数
2
解决办法
1万
查看次数

ansible:git模块挂起

我正在使用Ansible,我很难让git模块正常工作.我看过几个有同样问题的人发帖,我看了一下ansible doc,好吧我几乎尝试了所有的东西.我找到了一个明确的教程,我跟着他们使用git但是当我使用我的存储库时我又遇到了问题...:/ git任务只是挂起......没有错误,它只是卡住了!

这是我的主机文件:

[web]
dev1 ansible_ssh_host=10.0.0.101 ansible_ssh_user=root
Run Code Online (Sandbox Code Playgroud)

这是在我的计算机上的virtualbox上运行的vagrant VM.

我从本教程中获取了剧本,并完成了步骤08之前的所有步骤:https://github.com/leucos/ansible-tuto/tree/master/step-08

我在我的VM上运行它,它运行正常,然后我添加一个任务"部署我的代码"来使用我的存储库......但是这个任务不起作用.它是bitbucket上的私有存储库.这有什么不同吗?

- hosts: web
  tasks:

    - name: Deploy our awesome application
      action: git repo=https://github.com/leucos/ansible-tuto-demosite.git dest=/var/www/awesome-app
      tags: deploy

    - name: Deploy my code
      action: git repo=https://YAmikep@bitbucket.org/YAmikep/djangotutorial.git dest=/var/www/my-app
      tags: deploy
Run Code Online (Sandbox Code Playgroud)

用户可能有某些东西,或者运行ansible的用户,或者密钥等,但我来回试了几个小时,我现在更加困惑......我只是不知道该怎么做才能调试它并找出问题所在和错过的问题.

谢谢.

git ansible

23
推荐指数
3
解决办法
2万
查看次数

ubuntu 14.04 /etc/init.d/ vs/etc/init /启动时启动服务

根据我的理解,/ etc/init.d目录包含init在引导时执行的脚本.这仅适用于Debian或Ubuntu 14.04吗?

我想知道因为我在init.d目录中有几个脚本,但它们似乎在服务器启动时不运行.有检查日志吗?

例如,当我安装supervisor(apt-get install supervisor)时,它创建了一个init脚本,/etc/init.d/supervisor其中应该启动它,但是当我启动服务器时,supervisor不会运行.我有一些其他的例子,所以它似乎与主管脚本无关.

另外,/etc/init.d和之间有什么区别etc/init?我很迷惑.

谢谢

ubuntu-14.04

22
推荐指数
1
解决办法
5万
查看次数

django annotate and count:如何过滤要包括在count中的那些

给定一个查询集,我用以下内容添加相关对象(ModelA)的计数:

qs = User.objets.all()
qs.annotate(modela__count=models.Count('modela'))
Run Code Online (Sandbox Code Playgroud)

但是,有没有办法计算只满足标准的ModelA?例如,计算ModelA,其中deleted_at为null?

我尝试了两种不能正常工作的解决方案.

1)正如@knbk建议的那样,在注释之前使用过滤器.

qs = User.objects.all().filter(modela__deleted_at__isnull=True).annotate(modela__count=models.Count('modela', distinct=True))
Run Code Online (Sandbox Code Playgroud)

这是django生成的查询的简化版本:

SELECT COUNT(DISTINCT "modela"."id") AS "modela__count", "users".*
FROM "users"
LEFT OUTER JOIN "modela" ON ( "users"."id" = "modela"."user_id" ) 
WHERE "modela"."deleted_at" IS NULL 
GROUP BY "users"."id"
Run Code Online (Sandbox Code Playgroud)

问题来自WHERE子句.实际上,有一个LEFT JOIN,但后来的WHERE条件迫使它成为一个简单的JOIN.我需要将条件提升到JOIN子句中,以使其按预期工作.

所以,而不是

LEFT OUTER JOIN "modela" ON ( "users"."id" = "modela"."user_id" ) 
WHERE "modela"."deleted_at" IS NULL
Run Code Online (Sandbox Code Playgroud)

当我在纯SQL中直接执行它时,我需要以下内容.

LEFT OUTER JOIN "modela" ON ( "users"."id" = "modela"."user_id" ) 
AND "modela"."deleted_at" IS NULL
Run Code Online (Sandbox Code Playgroud)

如何在不执行原始查询的情况下更改查询集以获取此值?

2)正如其他人所说,我可以使用条件聚合.

我尝试了以下方法:

qs = User.objects.all().annotate(modela__count=models.Count(Case(When(modela__deleted_at__isnull=True, then=1))))
Run Code Online (Sandbox Code Playgroud)

变成以下SQL查询:

SELECT COUNT(CASE …
Run Code Online (Sandbox Code Playgroud)

django django-models django-queryset

17
推荐指数
1
解决办法
1万
查看次数

ansible:如何在notify中使用with_items中的变量$ {item}?

我是Ansible的新手,我正在尝试创建多个虚拟环境(每个项目一个,在变量中定义的项目列表).

该任务运行良好,我获得了所有文件夹,但是处理程序不起作用,它不会使用虚拟环境初始化每个文件夹.处理程序中的$ {item} varialbe不起作用.使用with_items时如何使用处理程序?

  tasks:    
    - name: create virtual env for all projects ${projects}
      file: state=directory path=${virtualenvs_dir}/${item}
      with_items: ${projects}
      notify: deploy virtual env

  handlers:
    - name: deploy virtual env
      command: virtualenv ${virtualenvs_dir}/${item}
Run Code Online (Sandbox Code Playgroud)

ansible

15
推荐指数
1
解决办法
4万
查看次数

'super'对象在python3中没有属性'__getattr__'

如何覆盖__getattr__python 3和继承?

当我使用以下内容时:

class MixinA:
    def __getattr__(self, item):
       # Process item and return value if known
       if item == 'a':
           return 'MixinA'

       # If it is unknown, pass it along to give 
       # a chance to another class to handle it
       return super().__getattr__(item)

class MixinB:
    def __getattr__(self, item):
       # Process item and return value if known
       if item == 'b':
           return 'MixinB'

       # If it is unknown, pass it along to give 
       # a chance to another class …
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-3.4

14
推荐指数
2
解决办法
1万
查看次数