如何使用Ansible在远程服务器上的lxc容器上执行任务? 我们使用Ansible在几台服务器(物理和虚拟机)上部署我们的代码。 到目前为止,每个实例都有一个公共IP地址和一个正在运行的ssh服务器,所以一切都像魅力一样。 但最近,我们不得不在两台远程服务器上的lxc容器上进行部署。 这两个容器是natted,不运行一个SSH服务器(我们想保持这种方式)。 我只能使用ssh连接到他们到物理主机,然后lxc-连接到他们。 我发现的唯一方法是从未更新最新的Ansible 2.0版本的自定义插件 。 我也到目前为止没有任何结果的邮件列表 。 有没有人成功地在这样的configuration中使用Ansible?
我写了一本应该安装一个名为kafkacat的工具, 剧本中的大部分任务都是一样的(最重要的)。 我从源代码编译工具,我已经成功地安装它使用我build立在安全的步骤手动。 剧本的相关部分是: – name: Install kafkacat (configure) command: chdir={{ kafkacat_installdir }} {{ kafkacat_installdir }}/configure –enable-json –enable-static sudo: yes – name: Install kafkacat (make) command: chdir={{ kafkacat_installdir }} make environment: CPPFLAGS: ' -Itmp-bootstrap/usr/local/include' STATIC_LIB_yajl: ' tmp-bootstrap/usr/local/lib/libyajl_s.a' STATIC_LIB_rdkafka: ' tmp-bootstrap/usr/local/lib/librdkafka.a' LIBS: ' -lpthread -lrt ' sudo: yes – name: Install kafkacat (make install) command: chdir={{ […]
我是新人。 现在我尝试重新启动我的Tomcat服务。 它看起来像一个无法检测服务状态(开始/停止),不能(重新)启动它。 请告诉如何做诊断? 这里( rotor-app-01.dev是Tomcat主机, brutus-HP-ENVY-17是我的本地主机): [email protected]:~ $ sudo service tomcat stop Using CATALINA_BASE: /opt/vendor/tomcat Using CATALINA_HOME: /opt/vendor/tomcat Using CATALINA_TMPDIR: /opt/vendor/tomcat/temp Using JRE_HOME: /home/vendor/jdk1.6.0_45 Using CLASSPATH: /home/vendor/jdk1.6.0_45/lib/tools.jar:/opt/vendor/tomcat/bin/bootstrap.jar:/opt/vendor/webapps/app/config Using CATALINA_PID: /var/run/vendor/tomcat.pid Tomcat is stopped [ OK ] [email protected]:~ $ sudo service tomcat status Tomcat is stopped [ OK ] 现在Tomcat停止了。 让我们开始吧! brutus@brutus-HP-ENVY-17: ~/projects/rotor/devops $ ansible-playbook […]
我在使用安全ansible-galaxy安装插件时遇到问题。 我已经尝试了三件事情: 没有sudo的情况下: ansible-galaxy install sfromm.epel [WARNING]: – sfromm.epel was NOT installed successfully: Could not update files in /etc/ansible/roles/sfromm.epel: [Errno 13] Permission denied: '/etc/ansible/roles/sfromm.epel' 这里没有什么奇怪的,显然我的用户不能写入该文件夹。 与sudo su一起使用: $ sudo su root@notebook# ansible-galaxy install sfromm.epel – … – sfromm.epel was installed successfully 正如你所看到的,我能够以这种方式安装插件。 与sudo打交道: 这里是我不明白发生了什么事。 $ sudo ansible-galaxy install sfromm.epel [WARNING]: – sfromm.epel was NOT installed […]
我想知道,在哪种情况下Ansible post_task将被执行? 如果前期任务或angular色出现任何故障,后期任务是否会被执行? 例如,我想清理服务器,当且仅当它停止。 在下面的脚本中,如果服务器未正确停止, server_dir会被删除吗? — – hosts: webservers pre_tasks: – shell: echo 'stopping server…' roles: – { role: stop_server } post_tasks: – file: path="{{ server_dir }}" state=absent
我正在pipe理一个(现在)ec2实例,它将为我们的用户提供一些工具。 我正在使用Ansible来pipe理它。 我已经创build了使用Cron-job和Ansible混合的用户(通过创build一个用户列表并且有一个剧本确保它们存在)。 我的主要问题是这个; 我试图为每个用户(新的和旧的)创build一个方法,以便能够使用他们上传到EC2 AWS的密钥访问实例。 我一直在我的想法在这方面的死胡同..有没有办法打电话给AWS的API将返回每个公钥的文本(因为他们是公开的,我不明白为什么这应该不存在..?),以便我可以确保它的副本存在于其各自的“〜/ .ssh / authorized_keys”文件中? 除此之外,我认为将密钥上传到S3存储桶可以让Ansible读取它们。 唯一的问题是用户不得不将密钥上传到S3。 任何反馈意见, 如果我正在攻击这个错误的方式,请让我知道。
我有一个剧本的任务。 我需要为每个任务发送消息。 – name: Upload kubernetes config template: src=kubernetes-config.j2 dest=/etc/kubernetes/config backup=yes group=root owner=root mode="u=rw,g=r,o=r" notify: Send notification message via Slack 我使用松散的通知模块。 – name: Send notification message via Slack local_action: module: slack domain: hsap.slack.com token: yourtoken msg: "{{ansible_nodename}} – {{ansible_distribution}}" 我想要使用一个处理程序(“通过Slack发送通知消息”)。 我不知道如何将任务名称作为variables传递给处理程序。 ¿我如何将任务名称作为variables传递?
我使用Nginx 1.8.0运行ubuntu 14.04。 在https中打开网页时,由于css / js / images无法加载,页面显示为中断。 我得到这个错误“ Blocked loading mixed active content ” 这是我的nginx.conf : https : //github.com/adithyakhamithkar/ansible/blob/master/roles/nginx/templates/nginx.j2 这是我的虚拟主机文件: https : //github.com/adithyakhamithkar/ansible/blob/master/roles/nginx/templates/virtualhost_ssl.j2 请有人请指导我如何解决这个问题。
以下任务在我的机器上直接运行时工作正常。 当我通过SSH从远程计算机上运行它时,它会永久挂起。 这是任务: – name: deploy public directory synchronize: src="{{ my_root_path }}/.deploy/office/public/" dest="{{ my_root_path}}/office/public/" compress=no checksum=yes delete=yes recursive=yes times=yes links=yes archive=no rsync_opts=–no-motd,–exclude=.gitignore delegate_to: "{{ inventory_hostname }}" 这是挂起之前的输出: <88.81.184.149> ESTABLISH CONNECTION FOR USER: root <88.81.184.149> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/root/.ansible/cp/ansible-ssh-%h-%p-%r" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 88.81.184.149 /bin/sh […]
我有一个自定义的事实,我的服务器检索客户数据。 这在机器上正常工作,并返回有效的JSON。 我可以写输出到另一个事实文件,这也很好地工作。 但是,当我做了安全的设置脚本返回所有的数据作为一个string在一个键和一个空的值,如下所示: "custom_fact": { "{data…}": {} } 这是我的事实脚本: #!/bin/bash #{{ ansible_managed }} ### extracting information from moodle instances cd /home/vhosts/moodle function getinstances() { MDL_INSTANCES=`find * -maxdepth 0 -not -name "_*" |xargs echo` } getinstanceinfo() { INSTANCE_ARRAY=() for i in $MDL_INSTANCES do source /home/vhosts/moodle/$i/_update.conf firstname="$(mysql -u $UM_DBUSER -p$UM_DBPASS -h mysql -e 'SELECT firstname FROM […]