জটিল স্যুইচগুলি দিয়ে মেক ও কনফিগার চালানোর চেষ্টা করে উত্তরসূচক প্লেবুক কাজ করছে না


10

এটি এই প্রশ্নের অনুসরণীয় । আমি কোনও ভ্যাগ্র্যান্ট ভিএম সরবরাহ করার জন্য উত্তরী ব্যবহার করার চেষ্টা করছি ভিএম সেন্টস 6.4 চলছে running আমি নিম্নলিখিত (সংক্ষিপ্ত) উত্তরযোগ্য প্লেবুক ব্যবহার করছি:

- hosts: default
  vars:
    home: '/home/vagrant'
    curl_version: '7_19_7'
    curl_url: 'https://github.com/bagder/curl/archive/curl-{{ curl_version }}.tar.gz'
    curl_dir: '{{ home }}/curl-curl-{{ curl_version }}'

  # user: vagrant
  remote_user: vagrant
  sudo: yes

  tasks:

  - name: Ensure required packages and installed and up to date - pt1
    yum: pkg={{ item }} state=present
    with_items:
      - make
      - gcc
      - etc...

  # Lots more yum tasks in here

  - name: Ensure CURL source downloaded
    get_url: url={{ curl_url }} dest=/home/vagrant/curl-{{ curl_version }}.tar

  - name: Extract CURL source
    command: tar -zxf {{ home }}/curl-{{ curl_version }}.tar creates={{ curl_dir }}

  - name: Copy ssh patch over
    copy: src=./files/ssh.c.patch dest={{ home }}/ssh.c.patch

  - name: Patch CURL with openssl
    shell: patch -t {{ curl_dir }}/lib/ssh.c {{ home }}/ssh.c.patch chdir={{ curl_dir }}/lib
    when: path_file_result.changed

  - name: Build CURL with openssl
    command: 'chdir={{ curl_dir }} "{{ item }}"'
    with_items:
      - ./buildconf
      - ./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss
      - make
      - make install
      - ldconfig

ভ্যাগ্র্যান্ট ঠিকঠাক কাজ করছে এবং উত্তরযোগ্য প্লেবুকটি সফলভাবে শেষ কাজ 'ওপেনসেল দিয়ে সিআরএল তৈরি করুন' - যা ব্যর্থ হয়েছে:

    TASK: [Build CURL with openssl] *********************************************** 
    changed: [default] => (item=./buildconf) => {"changed": true, "cmd": ["./buildconf"], "delta": "0:00:10.709817", "end": "2014-02-07 02:26:44.802652", "item": "./buildconf", "rc": 0, "start": "2014-02-07 02:26:34.092835", "stderr": "configure.ac:78: installing `./compile'
    configure.ac:73: installing `./config.guess'
    configure.ac:73: installing `./config.sub'
    configure.ac:65: installing `./missing'
    Makefile.am: installing `./depcomp'
    configure.ac:137: installing `./config.guess'
    configure.ac:137: installing `./config.sub'
    docs/examples/Makefile.am: installing `./depcomp'", "stdout": "buildconf: autoconf version 2.63 (ok)
    buildconf: autom4te version 2.63 (ok)
    buildconf: autoheader version 2.63 (ok)
    buildconf: automake version 1.11.1 (ok)
    buildconf: aclocal version 1.11.1 (ok)
    buildconf: libtool version 2.2.6 (ok)
    buildconf: libtoolize found
    buildconf: GNU m4 version 1.4.13 (ok)
    buildconf: running libtoolize
    buildconf: running aclocal
    buildconf: running aclocal hack to convert all mv to mv -f
    buildconf: running autoheader
    buildconf: cp lib/curl_config.h.in src/curl_config.h.in
    buildconf: running autoconf
    buildconf: running in ares
    buildconf: running automake
    buildconf: OK"}

    failed: [default] => (item=./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss) => {"cmd": ["./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss"], "failed": true, "item": "./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss", "rc": 2}
    msg: [Errno 2] No such file or directory
    failed: [default] => (item=make) => {"changed": true, "cmd": ["make"], "delta": "0:00:00.001828", "end": "2014-02-07 02:26:45.003968", "item": "make", "rc": 2, "start": "2014-02-07 02:26:45.002140"}
    stderr: make: *** No targets specified and no makefile found.  Stop.
    failed: [default] => (item=make install) => {"cmd": ["make install"], "failed": true, "item": "make install", "rc": 2}
    msg: [Errno 2] No such file or directory
    changed: [default] => (item=ldconfig) => {"changed": true, "cmd": ["ldconfig"], "delta": "0:00:00.009685", "end": "2014-02-07 02:26:46.096829", "item": "ldconfig", "rc": 0, "start": "2014-02-07 02:26:46.087144", "stderr": "", "stdout": ""}

FATAL: all hosts have already failed -- aborting

সুতরাং, ./buildconfপদক্ষেপটি কার্যকর হয় তবে ./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nssপদক্ষেপটি ব্যর্থ হচ্ছে বলে মনে হচ্ছে [Errno 2] No such file or directory। আমি ধারণা করছি এটি কারণ এটি পুরো স্ট্রিংটি চালানোর চেষ্টা করছে এটি একটি একক কমান্ডের মতো?

আমি যদি এর shellপরিবর্তে এটি ব্যবহার করতে পরিবর্তন করি তবে আমি এটি পরিবর্তে commandপেয়েছি:

failed: [default] => (item=./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss) => {"changed": true, "cmd": " \"./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss\" ", "delta": "0:00:00.001171", "end": "2014-02-07 02:31:34.862373", "item": "./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss", "rc": 127, "start": "2014-02-07 02:31:34.861202"}
stderr: /bin/sh: ./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss: No such file or directory

আমি যাচাই করেছি যে এখন পর্যন্ত সমস্ত কাজ কাজ করে, এবং ফাইলগুলি ডাউনলোড এবং প্রত্যাশিত জায়গাগুলিতে এবং প্যাচের কাজগুলি বের করা হয় ( দেখুন এখানে )।

টাস্কটি ব্যর্থ হওয়ার পরে (বা আপনি যদি এটির মন্তব্য করেন), আপনি যদি কনফিগার করা ভিএম-এর মধ্যে এসএসএইচ করে থাকেন এবং প্লেবুক থেকে সঠিক মানগুলি ব্যবহার করে নিজেই একই বিল্ড স্টেপগুলি চালান, এটি কার্যকর হয়।

আমি এখনও জবাবদিহি করার জন্য বেশ নতুন এবং আমি নিশ্চিত না কেন এটি কাজ করছে না? আমি কি ভুল করছি? এই configureকমান্ডকে আলাদাভাবে বিন্যাস করার বা উদ্ধৃতি দেওয়ার কোনও উপায় আছে যাতে এটি সঠিকভাবে ব্যাখ্যা করা যায়, যদি এটি সমস্যা হয়? আমি কি rawএই জন্য ব্যবহার করা উচিত ? অথবা অন্য কিছু?

উত্তর:


14

সমাধান এটি পরিবর্তন করার জন্য:

shell: 'chdir={{ curl_dir }} "{{ item }}"'

এটি:

shell: "{{ item }}"
args:
  chdir: "{{ curl_dir }}"

শেল মডিউলের জন্য ডকুমেন্টেশন এখন ফর্ম্যাটিং এই trickiness ঠিকানাগুলি। সম্পূর্ণ কার্যনির্বাহী কাজটি বর্তমানে এটির মতো দেখাচ্ছে:

- name: Build CURL with openssl
  shell: "{{ item }}"
  args:
    chdir: "{{ curl_dir }}"
  with_items:
    - ./buildconf
    - ./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss
    - make
    - make install
    - ldconfig
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.