2017-08-18 86 views
1

我想自动安装jenkins,并且我正在使用ansible。 我想安装jenkins及其repo和gpg密钥。这是我的剧本无法从ansible安装jenkins

--- 
- hosts: "{{ HOST }}" 
    become: true 
    become_user: root 
    gather_facts: true 
    become_method: sudo 

    vars: 
    temp_folder: /tmp 

    tasks: 
    - name: Include variables 
     include_vars: 
     dir: '../vars' 
     extensions: ['yml'] 

    - name: Install java 
     yum:  
     name: java  
     state: present  
     update_cache: yes 
     become: true 
     become_user: root 

    - name: Add Jenkins Repository | Add Sources List 
     yum_repository: 
     name: jenkins 
     description: jenkins 
     baseurl: "{{ jenkins_repo }}" 
     gpgkey: "{{ jenkins_key }}" 
     gpgcheck: yes 
     become: true 
     become_user: root 

    - name: Install jenkins 
     yum: 
     name: jenkins 
     state: present  
     update_cache: yes 
     become_user : root 
     become: true 

    - name: Start Jenkins Service | Enable on Boot 
     service: 
     name: jenkins 
     state: started 
     enabled: yes 
     become: true 
     become_user: root 

在var文件中的值包含以下键: - ---

jenkins_key: https://pkg.jenkins.io/redhat/jenkins.io.key 
jenkins_repo: https://pkg.jenkins.io/redhat/jenkins.repo 

现在,当我执行的剧本将其掷了我下面的错误。

fatal: [atul-ec2]: FAILED! => { 
    "changed": false, 
    "failed": true, 
    "invocation": { 
     "module_args": { 
      "conf_file": null, 
      "disable_gpg_check": false, 
      "disablerepo": null, 
      "enablerepo": null, 
      "exclude": null, 
      "install_repoquery": true, 
      "installroot": "/", 
      "list": null, 
      "name": [ 
       "jenkins" 
      ], 
      "skip_broken": false, 
      "state": "present", 
      "update_cache": true, 
      "validate_certs": true 
     } 
    }, 
    "msg": "Failure talking to yum: failure: repodata/repomd.xml from jenkins: [Errno 256] No more mirrors to try.\nhttps://pkg.jenkins.io/redhat/jenkins.repo/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found" 
} 

但是,当我试图手动添加jenkins回购它不会给我任何错误。

回答

1

baseurl参数应该包含指向包含软件包和repodata的URL的值。您提供的值是包含yum回购信息的文件。您需要从该文件中提取baseurl并将其用于该值。在你的redhat的例子,你的价值应该是:

jenkins_repo: https://pkg.jenkins.io/redhat/ 

回购将使用包含在该目录中的repodata/repomod.xml时,你是在yum_repository模块中使用它的jenkins_repo变量与baseurl参数一起使用进行正确配置在你的任务中。